MPC Video Renderer

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

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

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

Aleksoid1978

Ну значит на радеоне слишком затратный прямой доступ к GPU памяти, ну и то что DDR2 тоже может сказаться.

Добавлено: 2020-02-17 12:01:07

Evgeniy1990
Могу подсказать что посмотреть дабы увидеть причину такого длительного копирования данных.
DX11VideoProcessor.cpp - строка 1444 ставишь бряку, запускаешь проигрывание того 10-битного видео. Когда студия останавливается - жмешь F10(один шаг) - и студия покажет сколько времени занял этот кусок кода. Тоже самое на строке 1446.

Проверять ессно надо в релизной версии.
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

Evgeniy1990
Про зелень непонятно. Нужен скриншот статистики.

Собрал mpcvr_1137_upsr_3. Эта версии должна быть более совместимая с разными входными форматами.

Добавлено: 2020-02-17 08:29:01

Зелень увидел на Win8.1.


Добавлено: 2020-02-17 08:42:05

Выкладываю mpcvr_1137_upsr_4. Зелень вроде убрал.

Evgeniy1990

V0lt,
ЦитироватьВыкладываю mpcvr_1137_upsr_4. Зелень вроде убрал.
Ха, зелень так и осталась.
И еще поломался D3D11 видеопроцессор. Работает только Shaders.
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.

V0lt

Evgeniy1990
Спасибо.

Пойдем по более простому варианту. Прелагаю сборку mpcvr_1137_nv12p010_d3d11vp. В рендерере должен быть включен режим D3D11 и статистика, остальные настройки по умолчанию.

В этой сборке должно ускориться для NV12 и P010. Хорошо заметно на встройках.

Добавлено: 2020-02-17 10:19:01

Decoder DXVA + видеопроцессор D3D11
Было:
D3D9.LockRect/UnlockRect -> D3D11.Map/Unmap -> memcpy -> D3D11.CopyResource
Стало:
D3D9.LockRect/UnlockRect -> D3D11.UpdateSubresource

Програмный декодер + видеопроцессор D3D11
Было:
D3D11.Map/Unmap -> memcpy -> D3D11.CopyResource
Стало:
D3D11.UpdateSubresource

Evgeniy1990

V0lt,
ЦитироватьПойдем по более простому варианту. Прелагаю сборку mpcvr_1137_nv12p010_d3d11vp. В рендерере должен быть включен режим D3D11 и статистика, остальные настройки по умолчанию.
Проверил вашу сборку. Увы, пока не помогло...

Результат печальный.

1. Присутствует зеленый экран на ваших 10-битных HEVC.
2. Во время воспроизведения, присутствуют пропуски кадров.
3. D3D11-видеопроцессор работает.

Прилагаю короткую видеозапись.
Обратите пожалуйста внимание на статистику MPC VR в данной сборке.
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.

V0lt

Evgeniy1990
Даже не знаю что сказать. Сделай лог для mpcvr_1138_nv12p010_d3d11vp_Debug с помощью DebugView, пожалуйста. Находится там же.

Evgeniy1990

Цитата: V0ltДаже не знаю что сказать. Сделай лог для mpcvr_1138_nv12p010_d3d11vp_Debug с помощью DebugView, пожалуйста. Находится там же.
Сделал. Пожалуйста.
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.

V0lt

Evgeniy1990, судя по логу все хорошо. Почему у тебя зелень в этом билде, мне непонятно.

Evgeniy1990

V0lt,
ЦитироватьEvgeniy1990, судя по логу все хорошо. Почему у тебя зелень в этом билде, мне непонятно.
Вот и мне непонятно. Что самое странное, так это то что зелень присутствует только в ваших тестовых билдах, на Git-билдах ее и близко нет.
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.

V0lt

Evgeniy1990
На этой машине студия установлена? Это может повлиять на полноту лога.

Evgeniy1990

V0lt,
ЦитироватьНа этой машине студия установлена?
Конечно, установлена.

Я предлагаю вам сделать проще, подключиться ко мне удаленно через TeamViewer и удаленным способом разобраться. Данные для входа могу отправить вам в личку.
Студия, все исходники и весь инструментарий у меня установлены и настроены.
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.

V0lt

В общем все очень странно. У тебя на AMD UpdateSubresource() просто не работает и никаких ошибок не выдает.

Nvidia не советует использовать UpdateSubresource() для часто изменяемых ресурсов, но если не использовать, то приходится делать дополнительное копирование, т.к. D3D11 VP хочет текстуру определенного типа. А на встройках Intel лишнее копирование заметно тормозит процесс передачи кадра в D3D11 VP. Такая вот ерунда.

Evgeniy1990

V0lt,
ЦитироватьВ общем все очень странно. У тебя на AMD UpdateSubresource() просто не работает и никаких ошибок не выдает.

Nvidia не советует использовать UpdateSubresource() для часто изменяемых ресурсов, но если не использовать, то приходится делать дополнительное копирование, т.к. D3D11 VP хочет текстуру определенного типа. А на встройках Intel лишнее копирование заметно тормозит процесс передачи кадра в D3D11 VP. Такая вот ерунда.
Да уж, ну и ерунда... Один не требует, другой - требует, третьему хуже с требуемой функцией...
Получается, что для каждого вендора (производителя графического процессора) требуется свой собственный определенный алгоритм (программный код). Выходит, что реализовать некий универсальный алгоритм сразу для трех вендоров не получится.
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.

V0lt

Сейчас способ копирования как раз универсальный. Но он на встроенных видеокартах тормозит. Я попытался сделать быстрее, но на AMD не прокатило.

В общем обновил сборку mpcvr_1144_d3d11vp_UpdateSubresource. Вдруг кто-нибудь еще захочет потестировать на Intel.

lexxx

С какими-нибудь новым драйвером на AMD вдруг заработает, или новым драйвером НЕ AMD вдруг сломается. Может имеет смысл вынести такие неоднозначные оптимизации в опцию, типа как раньше было в винде: отключить аппаратное ускорение, или уровень аппаратного ускорения. А значения опций в сборке по умолчанию ставить подходящим для вендора на момент выхода сборки. Конечно, у кого оптимизация работает, не хотелось бы ее терять.