Сейчас на форуме: (+5 невидимых) |
eXeL@B —› Дневники и блоги —› Патч Windows 7 для включения графического ускорения в классической теме |
<< . 1 . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 10 ... 11 . 12 . >> |
Посл.ответ | Сообщение |
|
Создано: 18 февраля 2019 01:13 · Поправил: Jurim · Личное сообщение · #1 === Патч Windows 7 для включения GPU ускорения в классической теме === Пролог: Посвящено всем, кто привык работать в системе с классическим оформлением окон. Остальные, кто пользуются Windows 10 и спокойно работают в планшетозаточенном, вырвиглазном интерфейсе, упрощенном до уровня домохозяйки - вам эти проблемы не интересны, эта тема не для вас. Уйдите сразу и не провоцируйте на оскорбления. Описание проблемы: Графическое ускорение в Windows 7 используется только в аэро-темах и выключено в базовых темах, в том числе классической. Поэтому в все элементы интерфейса в аэро теме - прорисовываются с помощью видеокарты, а в классической теме - центральным процессором. При наличии нормальной видеокарты (новее 2010 года) аэро темы работают гораздо производительнее базовых тем (в том числе классической), что вызывает удивление, поскольку графически сложные темы отрисовываются быстрее примитивно простых. Классическая тема только в Windows 98/2000/XP работала быстро, а в Windows 7 - это угрюмый тормоз. Для устанения этой проблемы существует аналог классической темы (по виду), но в виде аэро-темы (по свойствам) - она использует ресурсы видеокарты и работает в разы быстрее встроенной классики. Усугубляет проблему, что некоторые разработчики драйверов, например AMD, наплевательски относятся к реализации 2D GDI функций в Radeon драйверах новее 2014 года, что ещё более замедляет работу классической темы - Но в других производителей (NVidia, Intel) дела хоть и лучше, но не намного... Приведённые глюки в - Performance Test 8.0 (перемигивание при перемещении по результатам) - NetMonitor - - Диспетчер задач (глюки отрисовки столбика загрузки ЦП) есть на всех видеокартах у всех пользователей и причина этому - установленный драйвер на видеокарту. После удаления драйвера, то есть на "Стандартном адаптере VGA" - этих проблем нет. Абсурд! Но так и есть, проверьте сами. Варианты решения: 1) Использовать тему - 2) Найти и пропатчить Винду, чтобы включить ускорение (например использовать какие-то файлы с Windows 8) 3) Написать фоновую программу, которая переводит работу ОС в режим, когда графика ускоряется 4) Написать драйвер "двойной буферизации" видеовывода Осуществлимо ли это? Я думаю да. Я видел, много раз, как после запуска чего-то видеовывод в классической теме ускорялся. Я не могу понять причину этого феномена, но в реальности так происходит... Мне не важно, через какую баг/фичу это реализуется, я вижу факт - в определённых условиях классика становится более производительной и это нужно использовать. Реальные примеры ускорения видеовывода в классической теме: Примеры 1, 2, 3, 6 - для видеокарт любого производителя (NVidia, Intel, AMD). Примеры 4, 5 - только для видеокарт AMD. 1) Запускаем NetMonitor - (окно 2 раза в секунду мигует). Берем за заголовок окна и начинаем его медленно возить по экрану. Происходит чудо, мигания убираются. То есть Винда может отрисовывать окно без багов, но почему на неподвижном окне она этого не делает. Давайте сделаем какую то прогу, которая работает в фоне и дрючит размер окна на 1 пиксель. Главное чтобы это ускоряло видеовывод и не было незаметным для пользователя. 2) Запускаем встроенный "Диспетчер задач" - столбик загрузки ЦП передергивается, когда нет нет нагрузки, либо она постоянна - то есть когда графика не перерисовывается - она начинает лагать. 3) Запускаем Performance Test 8.0 ( наблюдаем перемигивание при перемещении по результатам). Удаляем драйвер на видеокарту - перемигивание убирается. Видимо "Стандартный адаптер VGA" использует двойную буфферизацию, которую не используют драйвера от вендоров. Но почему система с драйвером должна работать медленнее, чем без драйвера. Нафиг такие дрова... 4) Увеличение 2D производительности из ничего. Оказалось, если под окном спектра расположить окно "Radeon Settings", чтобы хоть 1мм окна выступал за пределы окна спектра - то отрисовка спектра ускоряется в десятки раз и FPS в simpleGLUT повышается с 40-60 до 1100-1300. Видеодемонстрация - Видимо отрисовка окна "Radeon Settings" задействует какие-то функции видеокарты, которые параллельно заставляют работать быстро весь интерфейс. 5) При масштабировании размеров окна. Вообще не понятно, масштабируемое окно должно тормозить, а оно наоборот ускоряется. Глюки, которые видны на экране - их нет при завате экрана программой bandicam. Видеозаписи смотреть нужно обе, по-очереди. С фотоаппарата - С bandicam - 6) Есть рецепты, когда картинка ускоряется после запуска в фоне аудио или видеопроигрывателя, который просто переводит мультимедиа таймер в определенный режим, что тоже ускоряет видеовывод Постановка задачи Вообщем нужны любые мысли (патче файлов ОС, создании фоновой программы, драйвере двойной буферизации) - не важно что это будет и как реализовано, важно чтобы это заставляло ОС работать быстрее в классическом оформлении. |
|
Создано: 23 февраля 2019 16:18 · Поправил: Jurim · Личное сообщение · #2 Alchemistry Единственный кто спамит - то это ты.... Пишешь "претензиии", но сам ничем не помог по сути вопроса, кроме "бла-бла-бла". Если нечем заняться - вот тебе 20 серий фильма о глюках видеодрайверов, изучай 1й пост - rmn rmn пишет: Тогда ты пришел не туда. Там где я ходил бесполезно 2 года, я стыкался только с сотнями людей, которые: 1) вообще не понимают что такое "классическая тема" 2) спрашивают зачем тебе классическая тема, когда есть аэро, которая лучше всех. На мои слова что мне удобнее работать в классике - полное непонимание. 3) там не то, чтобы предложить решение, там 99% вообще не понимают что я пишу Поэтому приходится обращаться к хардкорным специалистам. Я не программист, но "по мелочи" скомпилить могу. В наличии есть Visual Studio 6.0 и C++ Builder 6.0. Только я могу скомпилить готовый исходник, с нуля сделать проект - я не в состоянии. Дайте готовый проект или готовый бинарник. Ато я сейчас беру ваши 10 строк, начинаю изучать куда их вообще вставить... Спустя месяц я создам проект, спустя 2 месяца я откомпилю и окажется, что идея кривая... И я буду думать, толи я не так скомпилил, толи идея изначально не рабочая. Я думаю, не всё так просто. Вин 7 с 2009 года, а на дворе 2019 год - все смотрят на мельтешащую классическую тему, а решения по сей день нет. |
|
Создано: 23 февраля 2019 16:36 · Поправил: rmn · Личное сообщение · #3 Jurim пишет: Только я могу скомпилить готовый исходник, с нуля сделать проект - я не в состоянии. Как ты собирался дрова фиксить, лол? То и есть готовый проект. Перед ним написать Code:
после него Code:
и можно компилить. |
|
Создано: 23 февраля 2019 16:42 · Поправил: Boostyq · Личное сообщение · #4 |
|
Создано: 23 февраля 2019 16:43 · Личное сообщение · #5 |
|
Создано: 23 февраля 2019 17:10 · Личное сообщение · #6 rmn Значит я создаю файл "classic_theme_fix.c" с содержимым Code:
Вопросы: 1) я должен скомпилить. Visual Studio 6.0 подойдет? 2) насколько я понимаю программа выполнится 1 раз и выйдет, а мне нужно чтобы она постоянно висела в памяти и привсаивала стиль WS_EX_COMPOSITED всем запускаемым приложениям 3) что делать с полноэкранными приложениями? |
|
Создано: 23 февраля 2019 17:21 · Личное сообщение · #7 |
|
Создано: 23 февраля 2019 19:07 · Личное сообщение · #8 rmn Что-то не получается. Compiling... classic_theme_fix.c c:\classic_fix\classic_theme_fix.c(4) : error C2055: expected formal parameter list, not a type list c:\classic_fix\classic_theme_fix.c(5) : warning C4013: 'BoostWindows' undefined; assuming extern returning int c:\classic_fix\classic_theme_fix.c(14) : error C2065: 'WS_EX_COMPOSITED' : undeclared identifier c:\classic_fix\classic_theme_fix.c(20) : error C2371: 'BoostWindows' : redefinition; different basic types Error executing cl.exe. Classic_Fix.exe - 3 error(s), 1 warning(s) |
|
Создано: 23 февраля 2019 19:17 · Личное сообщение · #9 |
|
Создано: 23 февраля 2019 19:51 · Личное сообщение · #10 Jurim пишет: c:\classic_fix\classic_theme_fix.c(5) : warning C4013: 'BoostWindows' undefined; assuming extern returning int Jurim пишет: c:\classic_fix\classic_theme_fix.c(20) : error C2371: 'BoostWindows' : redefinition; different basic types В хидере BoostWindows() со спецификатором extern прописана? Убери extern! Пропиши void BoostWindows(); ----- IZ.RU |
|
Создано: 23 февраля 2019 19:54 · Личное сообщение · #11 DenCoder пишет: В хидере BoostWindows() со спецификатором extern прописана? Нет, просто чукча не только не писатель, но и не читатель Нужно или функции в правильном порядке выставить или прототипы добавлять. | Сообщение посчитали полезным: Jurim |
|
Создано: 23 февраля 2019 19:56 · Поправил: Boostyq · Личное сообщение · #12 |
|
Создано: 23 февраля 2019 20:12 · Личное сообщение · #13 Boostyq пишет: Jurim почему скриншот обрезан мм? А тебе только необрезанные нравятся? Это же удобней - Alt+PrintScreen и на скрине только активное окно, ничего лишнего. | Сообщение посчитали полезным: Boostyq |
|
Создано: 23 февраля 2019 20:19 · Поправил: Jurim · Личное сообщение · #14 Boostyq Я не обрезал, я альт+принтскрин умею нажимать ))) rmn Скомпилировалось без ошибок. --------------------Configuration: Classic_Fix - Win32 Release-------------------- Compiling... classic_theme_fix.c classic_theme_fix.obj - 0 error(s), 0 warning(s) Но ехешник не создается. --------------------Configuration: Classic_Fix - Win32 Release-------------------- Linking... LIBC.lib(crt0.obj) : error LNK2001: unresolved external symbol _main Release/Classic_Fix.exe : fatal error LNK1120: 1 unresolved externals Error executing link.exe. Classic_Fix.exe - 2 error(s), 0 warning(s) Что не так? Может я проект не правильно создал. Создавал как "Win32 Console Application" |
|
Создано: 23 февраля 2019 20:26 · Поправил: Boostyq · Личное сообщение · #15 |
|
Создано: 23 февраля 2019 20:27 · Личное сообщение · #16 |
|
Создано: 23 февраля 2019 20:32 · Поправил: Boostyq · Личное сообщение · #17 Jurim пишет: Нужно пересоздать как "Win32 Application" ??? В твоем случае пофиг, просто определи точку входа соответствующую типу созданного проекта Там и разница небольшая, просто для консольного приложения будет создаваться консоль при загрузке, но нет никаких ограничений по работе с окнами ----- В облачке многоточия |
|
Создано: 23 февраля 2019 20:56 · Личное сообщение · #18 rmn Вы гений!!! Данный способ действительно ускоряет работу классической темы. Те глюки, что я демонстрировал в спектре фубара, после запуска вашей программы асбсолютно исчесли! И сейчас впервые за 2 года, я вижу неглючащий спектр фубара на АМД видеокарте. Добавлено спустя 7 минут Вообщем, как казалось, всё дело в двойной буфферизации. Наличие оной на 100% убирает все глюки классической темы. Я сейчас попробовал программу 2D Test - ваще супер!!! Время отрисовки уменьшается с 70 мс до 3 мс. Как я понял, программа, а она сейчас имеет такой вид Code:
присваивает свойство только открытым в данный момент окнам. Так как если запустить фубар, потом вашу программу, потом зайти в спектр - то он лагает. А если открыть спектр - а потом запустить вашу программу - то всё ускоряется. Вопрос: Как сделать определение новых открываемых окон и посылать в новое окно это чудесное свойство? Добавлено спустя 22 минуты Сейчас этот текст будет везде. Чтоб вам сильно не икалось. Code:
|
|
Создано: 23 февраля 2019 21:27 · Поправил: Boostyq · Личное сообщение · #19 |
|
Создано: 23 февраля 2019 22:09 · Личное сообщение · #20 ВНИМАНИЕ ВСЕМ Огромная просьба поставить спасибку этому гениальному человеку - rmn Я не знаю, как это реализовать дальше, но его способ заслать окну стиль WS_EX_COMPOSITED принудительно включает двойную буферизацию и убирает 2D лаги на класической теме Вин 7 - это 100% работает. Я это проверил и видел своими глазами!! Сейчас задача - нужно довести его идею до ума, то есть написать программу, которая присваивает каждому новому окну этот стиль. То есть прога должна постоянно висеть в памяти и срабатывать на новые окна. Возможно нужно добавить какие-то проверки, чтобы эти функции работали только в упрощенных темах и не работали в аэро темах (они там не нужны), так же дополнительные проверки с полноэкранным режимом. Ну вообщем программистам виднее. Кто может подсказать, какие глюки это может вызвать - тоже прошу поделиться в этой теме. |
|
Создано: 23 февраля 2019 23:19 · Личное сообщение · #21 Jurim пишет: Сейчас задача - нужно довести его идею до ума, то есть написать программу, которая присваивает каждому новому окну этот стиль. То есть прога должна постоянно висеть в памяти и срабатывать на новые окна. Есть SetWindowsHookEx() и WM_NCCREATE Notification. Хук-процедура, установленная функцией SetWindowsHookEx() может отлавливать WM_NCCREATE и в передаваемой структуре менять стиль. Ну а чтобы прога висела в памяти, можно и просто Sleep(INFINITE); ----- IZ.RU |
|
Создано: 24 февраля 2019 01:08 · Поправил: Jurim · Личное сообщение · #22 Метод с WS_EX_COMPOSITED делает главное - показывает, что ускорить видеовывод в классической теме реально. Стали лучше работать: 1) foobar2000 - спектр полностью перестал мигать 2) Total Commander - перестали мигать текстовые метки 3) PerformanceTest - перестали мигать поля 4) Перестал мигать столбик загрузки ЦП в "Диспетчере задач", но появилась другая проблема (читай ниже) 5) 2D Test - отрисовка ускоряется в 15 раз, пропадают глюки при одновременной отрисовке с фубаром Но и вызывает проблемы, например: 1) Появляются глюки при переключении по закладкам "Диспетчера задач" 2) TCPMonitor начинает глючить, картинка в окне бесконечно накладывается при перемещении окна и не обновляется 3) NetMonitor - вообще перестает работать, показывая белое поле 4) Глючат почти все виндовские окна - например "Службы", "Мой компьютер", "Корзина" Вообщем, нужно ещё думать почему так происходит. Каким образом одни окна отличаются от других и засылать команду WS_EX_COMPOSITED не всем окнам, а избранным. Как понять какими свойствами одни окна отличаются от других, почему такая разная реакция? |
|
Создано: 24 февраля 2019 01:23 · Личное сообщение · #23 |
|
Создано: 24 февраля 2019 01:46 · Личное сообщение · #24 |
|
Создано: 24 февраля 2019 01:54 · Личное сообщение · #25 Jurim пишет: Нужны мысли да ты зайоб возьми Autoit Window info да посмотри классы, сравни там все по поводу 36кб чет много, нуно в релизе компилить, а не в дебаге ----- В облачке многоточия | Сообщение посчитали полезным: morgot |
|
Создано: 24 февраля 2019 03:16 · Личное сообщение · #26 |
|
Создано: 24 февраля 2019 13:48 · Личное сообщение · #27 rmn Мой советник Михалыч, кинул ссылку на такую статью - Вообщем свойство WS_EX_COMPOSITED нужно включать только для "избранных" окон. Можно ли каким-то софтом посмотреть свойства окон в разных запущенных приложениях, чтобы найти признак, чем одни отличаются от других? |
|
Создано: 24 февраля 2019 14:25 · Личное сообщение · #28 |
|
Создано: 24 февраля 2019 14:35 · Поправил: Boostyq · Личное сообщение · #29 |
|
Создано: 24 февраля 2019 17:24 · Личное сообщение · #30 Boostyq Читаю и изучаю. Вот нарыл целую стопку программ подобного рода - Там масса всякой информации. Одно не могу понять, на какие свойства нужно обращать внимание?? Куда смотреть то? |
|
Создано: 24 февраля 2019 17:46 · Личное сообщение · #31 |
<< . 1 . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 10 ... 11 . 12 . >> |
eXeL@B —› Дневники и блоги —› Патч Windows 7 для включения графического ускорения в классической теме |
Эта тема закрыта. Ответы больше не принимаются. |