MPC Video Renderer

Автор V0lt, 24 февраля 2018, 19:10:59

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

MPCfan

V0lt,
В  mpcvr_1144_d3d11vp_UpdateSubresource однозначно есть улучшение на Intel hd4000. По крайней мере удалось воспроизвести фуллэйчдишный файл h264 30fps c dxva2 + dx11 без дроппов и скоростью примерно = 30fps. Например этот же файл в mpcvr_1141 воспроизводится примерно со скоростью в 20fps и кучей дроппов. Также в некоторых случаях уменьшились показания в "copy" почти вдвое при софтовом и dxva2 декодировании. С dx11native изменений не заметил.

V0lt

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

Интересно как поведет себя этот механизм на дискретной видеокарте от intel, если она появится. И работает ли такое на встройке от AMD. Я поэтому и подумал делать опционально.

V0lt

В версии v0.4.2.1152 добавлен дизеринг при финальном уменьшении разрядности цвета с 10/16 битн до 8 бит. Это должно улучшить плавные переходы на качественном 10-битном видео.

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

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

V0lt

В режиме DX11 заметил странность.
Видео тормозит, пропусков кадров почему-то нет. Сабы отключены. SynсOffset естественно растет, но кадры упорно не выбрасываются.

Aleksoid1978

Так нагрузить Present не смог - но в других случаях у меня норм пропускаются кадры.
AMD Ryzen 5 3600 /GIGABYTE B450 Gaming X /AMD Radeon R9 16Gb@3200 /Kingston 500Gb M.2 /GTX 1650 /Samsung U28R550UQI /OLED Philips 55OLED707 /Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215

V0lt

Aleksoid1978
Нагрузить просто. Добавить шейдеров "Adaptive sharpen" от 3 до 5 шт и сделать размер окна побольше.

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

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

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

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

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

Aleksoid1978

Вызов Render() у нас идет в основном потоке на DX9/11, тут нет никакой разницы.

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

С эмулировал "долгий" Present(выставил просто Sleep() после вызова) - все равно все ок, кадры пропускаются.
AMD Ryzen 5 3600 /GIGABYTE B450 Gaming X /AMD Radeon R9 16Gb@3200 /Kingston 500Gb M.2 /GTX 1650 /Samsung U28R550UQI /OLED Philips 55OLED707 /Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215

V0lt

Немного потестировал на Intel HD 4000 и окне на весь рабочий стол..
Добавляю один шейдер Nightvision и несколько Adaptive sharpen.
1+5 - нормально.
1+(6-8) - растет Sync offset, дропов нет, видео отстает от звука.
1+9 - появляются дропы, Sync offset не растет, нормально.

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

krmit

MPC-VR 1148/1165, MPC-BE 5092/5095, Win7x64.
С включенным режимом DX11 на видео с субтитрами при появлении первой строки экран мигает белым, видно только строку субтитра.
На DX9 такого нет.

V0lt

krmit
Белый экран не видел. Если хочется нормального воспроизведения субтитров, то посоветую использовать режим DX9.

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

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

Angel

V0lt, а в WIN 10?
а то мб я зря включаю его в своей 10 x64 LTSB.

V0lt

Цитата: Angelа то мб я зря включаю его в своей 10 x64 LTSB.
Люди! У вас же есть глаза! :)
Я не могу ответить, лучше у вас режим DX11 или такой же как DX9. :)

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

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

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

Evgeniy1990

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

Цитата: krmitMPC-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 стало плавнее.
AMD Ryzen 5 3600 /GIGABYTE B450 Gaming X /AMD Radeon R9 16Gb@3200 /Kingston 500Gb M.2 /GTX 1650 /Samsung U28R550UQI /OLED Philips 55OLED707 /Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215