Автор Тема: MPC Video Renderer  (Прочитано 72963 раз)

0 Пользователей и 2 Гостей просматривают эту тему.

MPCfan

  • Постоялец
  • ***
  • Сообщений: 129
MPC Video Renderer
« Ответ #630 : 19 Февраль 2020, 09:37:04 »
V0lt,
В  mpcvr_1144_d3d11vp_UpdateSubresource однозначно есть улучшение на Intel hd4000. По крайней мере удалось воспроизвести фуллэйчдишный файл h264 30fps c dxva2 + dx11 без дроппов и скоростью примерно = 30fps. Например этот же файл в mpcvr_1141 воспроизводится примерно со скоростью в 20fps и кучей дроппов. Также в некоторых случаях уменьшились показания в "copy" почти вдвое при софтовом и dxva2 декодировании. С dx11native изменений не заметил.

V0lt

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 1811
MPC Video Renderer
« Ответ #631 : 19 Февраль 2020, 11:05:09 »
lexxx
Это не оптимизация. Это просто другой способ записи кадра в текстуру D3D11.

MPCfan
Спасибо.

Краткий отчет.
1. Intel HD 4000. Использование UpdateSubresource заментно уменьшает время копирования.
2. Nvidia GTX 950. Время копирования осталось прежним.
3. Nvidia GT 1030. Время копирования немного увеличилось.
4. AMD RX 580. Время копирования осталось прежним, вместо кадра зелень.

В общем способ имеет смысл внедрять для Intel, но сначала хорошо бы проверить на видеокартах разных поколений (HD 3000, UHD 630), а так же на гибридной графике.

lexxx

  • Пользователь
  • **
  • Сообщений: 15
MPC Video Renderer
« Ответ #632 : 19 Февраль 2020, 14:03:37 »
Интересно как поведет себя этот механизм на дискретной видеокарте от intel, если она появится. И работает ли такое на встройке от AMD. Я поэтому и подумал делать опционально.

V0lt

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 1811
MPC Video Renderer
« Ответ #633 : 22 Февраль 2020, 06:26:36 »
В версии v0.4.2.1152 добавлен дизеринг при финальном уменьшении разрядности цвета с 10/16 битн до 8 бит. Это должно улучшить плавные переходы на качественном 10-битном видео.

Добавлено: 2020-02-22 09:26:36

Я провел некоторые тесты в режиме DX9 и заметил, что время "Render" практически всегда 0. Subs также редко бывает больше 0. Меняется лишь Stats. Скорее всего все команды улетают в D3D9 без ожиданий, и лишь SetRenderTarget и PresentEx работают с ожиданием.
В общем вывод таймингов надо будет переделать...

V0lt

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 1811
MPC Video Renderer
« Ответ #634 : 23 Февраль 2020, 12:55:07 »
В режиме DX11 заметил странность.
Видео тормозит, пропусков кадров почему-то нет. Сабы отключены. SynсOffset естественно растет, но кадры упорно не выбрасываются.

Aleksoid1978

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 2208
MPC Video Renderer
« Ответ #635 : 24 Февраль 2020, 02:44:21 »
Так нагрузить Present не смог - но в других случаях у меня норм пропускаются кадры.
I7 2600K@4.2 / Asrock P67 Extreme 4 Gen 3 / Kingston HyperX 8Gb 1866 (4x2) Kit / GIGABYTE GTX 960 / BenQ EW2430 / LG 47LM620T / Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215

V0lt

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 1811
MPC Video Renderer
« Ответ #636 : 24 Февраль 2020, 06:57:15 »
Aleksoid1978
Нагрузить просто. Добавить шейдеров "Adaptive sharpen" от 3 до 5 шт и сделать размер окна побольше.

Добавлено: 2020-02-24 08:10:25

Хотя это только для встройки легко. Для GTX 950 и 20 шейдеров нипочем, потупит при инициализации, но потом вытянет.

Добавлено: 2020-02-24 09:57:15

Дропается кадр или отображается отвечают функции базового рендерера. Там сложный механизм, который разруливает кучу ситуаций.

Пока только одна версия. DX9 у нас в отдельном потоке, а DX11 - нет.

Aleksoid1978

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 2208
MPC Video Renderer
« Ответ #637 : 24 Февраль 2020, 10:35:38 »
Вызов Render() у нас идет в основном потоке на DX9/11, тут нет никакой разницы.

Добавлено: 2020-02-24 20:35:38

С эмулировал "долгий" Present(выставил просто Sleep() после вызова) - все равно все ок, кадры пропускаются.
I7 2600K@4.2 / Asrock P67 Extreme 4 Gen 3 / Kingston HyperX 8Gb 1866 (4x2) Kit / GIGABYTE GTX 960 / BenQ EW2430 / LG 47LM620T / Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215

V0lt

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 1811
MPC Video Renderer
« Ответ #638 : 24 Февраль 2020, 16:35:11 »
Немного потестировал на Intel HD 4000 и окне на весь рабочий стол..
Добавляю один шейдер Nightvision и несколько Adaptive sharpen.
1+5 - нормально.
1+(6-8) - растет Sync offset, дропов нет, видео отстает от звука.
1+9 - появляются дропы, Sync offset не растет, нормально.

В коде есть условия, которые заставляют выводить кадр принудительно. Это иногда бывает нужно, но не в этом случае. Надо будет еще поизучать и потестировать.

krmit

  • Новичок
  • *
  • Сообщений: 7
MPC Video Renderer
« Ответ #639 : 25 Февраль 2020, 14:23:07 »
MPC-VR 1148/1165, MPC-BE 5092/5095, Win7x64.
С включенным режимом DX11 на видео с субтитрами при появлении первой строки экран мигает белым, видно только строку субтитра.
На DX9 такого нет.

V0lt

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 1811
MPC Video Renderer
« Ответ #640 : 25 Февраль 2020, 15:51:42 »
krmit
Белый экран не видел. Если хочется нормального воспроизведения субтитров, то посоветую использовать режим DX9.

Добавлено: 2020-02-25 18:51:42

Тем более в Win7, режим DX11 чисто для галочки сделан.

Angel

  • Пользователь
  • **
  • Сообщений: 97
MPC Video Renderer
« Ответ #641 : 25 Февраль 2020, 15:54:49 »
V0lt, а в WIN 10?
а то мб я зря включаю его в своей 10 x64 LTSB.

V0lt

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 1811
MPC Video Renderer
« Ответ #642 : 25 Февраль 2020, 17:01:58 »
Цитата: Angel
а то мб я зря включаю его в своей 10 x64 LTSB.
Люди! У вас же есть глаза! :)
Я не могу ответить, лучше у вас режим DX11 или такой же как DX9. :)

Я уже писал, что DX11 - перспективный режим для Win10 (и возможно для Win8.1), но что-то радикально лучшего в нем сейчас нет.

Добавлено: 2020-02-25 20:01:58

Режим D3D11 медленнее работает с декодером DXVA.
Режим D3D11 медленнее выводит субтитры.

Evgeniy1990

  • Ветеран
  • *****
  • Сообщений: 1453
MPC Video Renderer
« Ответ #643 : 25 Февраль 2020, 18:21:38 »
V0lt,
Цитировать
Люди! У вас же есть глаза! smile
Я не могу ответить, лучше у вас режим DX11 или такой же как DX9. smile
Да, у меня есть глаза, а кроме них, есть еще и великолепная внимательность, которая мне говорит, что режим DX11 лучше всего работает на видеокартах от NVIDIA и хуже всего работает на видеокартах от AMD.
Что касается режима DX9, то он нормально работает на видеокартах обоих крупных производителей (NVIDIA/AMD).
Цитировать
Я уже писал, что DX11 - перспективный режим для Win10 (и возможно для Win8.1
<удалено модератором>

Еще раз перечислю основные проблемы режима DX11 на видеокартах от AMD:

1. Не работает аппаратный деинтерлейс. Ни с какими драйверами вообще. Гребенка присутствует всегда.
2. Пропуски кадров на 10-битных видео файлах в режиме аппаратного ускорения DXVA2.
3. Любимая проблема AMD с древнейших времен - зеленый экран, если что-то пошло не так, или что-то идет не по спекам (спецификациям). Т.е. чуть что - сразу зелень на все видео.
4. Discard работает отвратительно на видео файлах с высокими частотами кадров (50/60 FPS)
5. Масштабирование AMD GPU приводит к фризам видео кадров и снижению их частоты.
6. Зависимость от частоты обновления экрана (дисплея). Чем она меньше, тем больше пропусков кадров.
7. Мерцание субтитров на AMD в режиме DX11. Особенно проявляется при выходе из спящего режима.
8. Возможен некорректный расчет памяти в режиме FlipEx / Flip Discard / Flip Sequential, из-за чего может вылететь BSOD с ошибкой "0x19 BAD POOL HEADER".
9. Dither под вопросом. Работает он, или нет - одному только богу AMD известно.

Исходя из данных проблем, можно смело подтвердить слова V0lt\'a - а именно вот эти:
"Режим D3D11 медленнее работает с декодером DXVA".

Что касается наличия медленного вывода субтитров, то тут, лично я, не увидел совершенно никакой разницы, по сравнению с режимом DX9. На обоих режимах субтитры выводятся одинаково.

<удалено модератором>
Motherboards: ASUS P5Q/GIGABYTE EP35C-DS3R, CPU: Core 2 Duo E8300/E8400, Memory: DDR2/DDR3, Video: MSI GTX 465/ASUS EAH5770/GTX 650 Ti, Audio: ASUS Xonar DG 5.1/Creative SB 5.1. VX/X-Fi Xtreme Gamer.

Aleksoid1978

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 2208
MPC Video Renderer
« Ответ #644 : 26 Февраль 2020, 01:06:17 »
Цитата: krmit
MPC-VR 1148/1165, MPC-BE 5092/5095, Win7x64.
С включенным режимом DX11 на видео с субтитрами при появлении первой строки экран мигает белым, видно только строку субтитра.
На DX9 такого нет.

Можешь хоть скрин показать как это выглядит ?

Добавлено: 2020-02-26 11:06:17

Нашел тут простые сабы но хорошо видно плавность в движении - https://yadi.sk/d/HFGmW4lI6ViH4A
На MPC VR что DX9, что DX11 - вывод рывками. EVR-CP(никаких галок VSync не выставлено)/madVR - намного плавнее.

P.S. Вроде как после коммита 4714f04 стало плавнее.
I7 2600K@4.2 / Asrock P67 Extreme 4 Gen 3 / Kingston HyperX 8Gb 1866 (4x2) Kit / GIGABYTE GTX 960 / BenQ EW2430 / LG 47LM620T / Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215