MPC-BE forum

MPC-BE => Баг Репорт / The bug report => Архив / Archive => Тема начата: Evgeniy1990 от 26 марта 2021, 08:50:13

Название: Проблемы с D3D11 VP на видеокартах ATI/AMD [Исправлено]
Отправлено: Evgeniy1990 от 26 марта 2021, 08:50:13
Проблемы с D3D11 VP на ATI/AMD-видеокартах

Описание проблемы (суть):

На более ранних (первых) DirectX 11 ATI/AMD-видеокартах присутствуют (наблюдаются) некоторые проблемы, при использовании D3D11-видеопроцессора.

Условия воспроизведения:

1. Конфигурация: D3D11 VP + D3D11 Decoder
2. Конфигурация: D3D11 VP + Swap effect: Discard + DXVA2/Software

Список проблем:

#1. Самая основная - черный экран, или же "мертвый Lock", при конфигурации: D3D11 VP + D3D11 Decoder.
#2. Черный экран в оконном режиме, при конфигурации: D3D11 VP + Swap effect: Discard + DXVA2/Software.
#3. Черный экран в режимах FSW/FSE, при конфигурации: D3D11 VP + Swap effect: Discard + DXVA2/Software.
#4. Мертвое зависание, при переходе в режим FSE, после обратного возвращения с D3D11 VP (DX11 API) на DXVA2 VP (DX9 API).
Название: Re: Проблемы с D3D11 VP на первых DirectX11 - видеокартах от компании ATI/AMD
Отправлено: Evgeniy1990 от 26 марта 2021, 08:53:40
Ход тестирования, поиск поломок, отчеты и наблюдения:

1. С 1617 до 1638 билда, конфигурация D3D11 VP + Swap effect: Discard + DXVA2/Software всегда имеет строго черный экран, как в окне, так и в полноэкранных режимах FSW/FSE.
2. Начиная с 1638 билда до 1655, в полноэкранных режимах FSW/FSE, уже имеется нормальная картинка, но не в оконном. В окне по прежнему остается черный экран.
3. После 1655 билда, ситуация сильно ухудшается. Пропала нормальная картинка в полноэкранных режимах FSW/FSE. В результате чего, у нас теперь опять присутствует черный экран как в окне, так и при полном экране.
4. Начиная с билда 1656 и далее, опять всегда черный экран, как в окне, так и в полноэкранных режимах FSW/FSE.
5. Удалось найти билд с нормальной картинкой, при конфигурации: D3D11 VP + Swap effect: Discard + DXVA2/Software. Отсюда вытекает диапазон поиска поломки: [1596 -> 1638].
6. Сокращаем диапазон поиска поломки: [1608 -> 1620].
7. Итоговый диапазон поиска поломки: [1616 -> 1617].

Итак, был найден первый виновник - это commit 4aa1750 (build 1656) (https://github.com/Aleksoid1978/VideoRenderer/commit/4aa1750edbb3de3fc999f3b92dd80323730805b8)
Начиная с него, пропала нормальная картинка в режимах FSW/FSE, которая была ранее.

Исправлено в commit e7c503d (build 1682) (https://github.com/Aleksoid1978/VideoRenderer/commit/e7c503dbcfa000e41075ec833c8819236b1dd6da).

Затем, был найден второй виновник - это commit ee3c902 (build 1670) (https://github.com/Aleksoid1978/VideoRenderer/commit/ee3c902127f83067735a14c5287d13cbb7db2c8a).
Начиная с него, виснет намертво режим FSE, при обратном возвращении с D3D11 VP (DX11 API) на DXVA2 VP (DX9 API).

Исправлено в commit 0dfe831 (build 1678) (https://github.com/Aleksoid1978/VideoRenderer/commit/0dfe831dcbbb3e8fbaf111f0140576c6a08ccebf).

Итак, был найден третий виновник - это commit f4bbdf1 (build 1617) (https://github.com/Aleksoid1978/VideoRenderer/commit/f4bbdf1b5358d823f3e840bb74133882cace6e4c).
Начиная с него, полностью пропала нормальная картинка в оконном и полноэкранных режимах FSW/FSE, при конфигурации: D3D11 VP + Swap effect: Discard + DXVA2/Software, которая была ранее.

Исправлено в commit e7c503d (build 1682) (https://github.com/Aleksoid1978/VideoRenderer/commit/e7c503dbcfa000e41075ec833c8819236b1dd6da).
Название: Re: Проблемы с D3D11 VP на первых DirectX11 - видеокартах от компании ATI/AMD
Отправлено: Aleksoid1978 от 26 марта 2021, 10:05:07
Я же написал что зависание в DX9 уже не должно быть.
Название: Re: Проблемы с D3D11 VP на первых DirectX11 - видеокартах от компании ATI/AMD
Отправлено: Evgeniy1990 от 26 марта 2021, 10:46:45
Aleksoid1978,
ЦитироватьЯ же написал что зависание в DX9 уже не должно быть.
Проверил commit 0dfe831 (build 1678) (https://github.com/Aleksoid1978/VideoRenderer/commit/0dfe831dcbbb3e8fbaf111f0140576c6a08ccebf) - зависание, при обратном возвращении на DX9 API полностью устранено.
Название: Re: Проблемы с D3D11 VP на первых DirectX11 - видеокартах от компании ATI/AMD
Отправлено: Aleksoid1978 от 26 марта 2021, 11:27:47
А все остальное, чёрный экран - было изначально, тут что-то при использовании VP, а то что иногда и была картинка - так это просто по программной ошибке юзались шейдеры для вывода, мои коммиты просто сделали проверки более чёткие.
Название: Re: Проблемы с D3D11 VP на первых DirectX11 - видеокартах от компании ATI/AMD
Отправлено: Evgeniy1990 от 26 марта 2021, 11:40:42
Aleksoid1978,
Цитата: Aleksoid1978 от 26 марта 2021, 11:27:47
А все остальное, чёрный экран - было изначально, тут что-то при использовании VP, а то что иногда и была картинка - так это просто по программной ошибке юзались шейдеры для вывода, мои коммиты просто сделали проверки более чёткие.
Увы, но нет, обратите пожалуйста внимание на commit f4bbdf1 (build 1617).
Нормальная картинка пропала задолго до ваших коммитов.
Увы и ах, видеокартам ATI/AMD, в отличие от NVIDIA, все же требуется лишнее копирование и доп. обработка для D3D11 VP.
Название: Re: Проблемы с D3D11 VP на первых DirectX11 - видеокартах от компании ATI/AMD
Отправлено: Aleksoid1978 от 26 марта 2021, 12:56:24
Ну это в принципе то про что я и говорил. Получается как сделали чистый VP - картинка пропала. Так что - юзаем шейдеры. Не думаю что получиться решить этот вопрос, т.к. причина так и не известна.

Делать "хаки" для старых AMD/ATI - не думаю что это правильный путь :) Да и не возможно перечислить все возможные варианты адаптеров.
Название: Re: Проблемы с D3D11 VP на первых DirectX11 - видеокартах от компании ATI/AMD
Отправлено: Evgeniy1990 от 26 марта 2021, 13:12:34
Aleksoid1978,
ЦитироватьДелать "хаки" для старых AMD/ATI - не думаю что это правильный путь
Уж лучше реализовать "хаки" для таких случаев, чем видеть и наблюдать, прости меня пожалуйста, всю эту жуть и дичь, которая сейчас творится. Да, я имею ввиду этот "квадрат Малевича" и прочий "треш" с ним связанный.

Да, с одной стороны, вы правы, но с другой, когда творится такой ужас, уж лучше реализовать нормальный обходной вариант.
Название: Re: Проблемы с D3D11 VP на первых DirectX11 - видеокартах от компании ATI/AMD
Отправлено: Aleksoid1978 от 26 марта 2021, 13:15:37
Нет никакого ужаса, не юзаем VP и все.
Название: Re: Проблемы с D3D11 VP на первых DirectX11 - видеокартах от компании ATI/AMD
Отправлено: Evgeniy1990 от 26 марта 2021, 13:26:35
Aleksoid1978,
Цитата: Aleksoid1978 от 26 марта 2021, 13:15:37
Нет никакого ужаса, не юзаем VP и все.
Вы просто не видели у себя этого. Да, можно использовать вместо D3D11 VP - шейдерный видеопроцессор (Shaders).
А можно также продолжать использовать D3D11 VP, но с одним условием, которое я добавил выше, - это Swap effect: Flip.

Вывод:

Выходит, что картинки нет при использовании Swap effect: Discard, начиная с билда 1617.
При использовании Swap effect: Flip, картинка есть и продолжает оставаться в дальнейшем.

А вот это уже интересно, почему так? Что, разве Discard хуже Flip? Да не может такого быть, тем более он идет у нас по умолчанию, как наиболее стабильный и оптимальный.
Название: Re: Проблемы с D3D11 VP на первых DirectX11 - видеокартах от компании ATI/AMD
Отправлено: Aleksoid1978 от 26 марта 2021, 13:29:20
Да хз что не так с Discard, но раз причину нашли - юзаем Flip и все.

А по поводу всех этих изменений и т.д. - вот проверяем на D3D11 VP и Discard/Flip - https://disk.yandex.ru/d/GJ9CiNhl_0qKTA
Название: Re: Проблемы с D3D11 VP на первых DirectX11 - видеокартах от компании ATI/AMD
Отправлено: Aleksoid1978 от 26 марта 2021, 13:29:55
И еще по поводу Flip - я бы его поставил дефолтным.
Название: Re: Проблемы с D3D11 VP на первых DirectX11 - видеокартах от компании ATI/AMD
Отправлено: Evgeniy1990 от 26 марта 2021, 13:38:44
Aleksoid1978,
ЦитироватьА по поводу всех этих изменений и т.д. - вот проверяем на D3D11 VP и Discard/Flip - https://disk.yandex.ru/d/GJ9CiNhl_0qKTA
Проверил ваш тестовый билд. Вот теперь другое дело, полностью присутствует нормальная картинка, при конфигурации: D3D11 VP + Swap effect: Discard + DXVA2/Software. :) Можете вносить свои изменения в Git-репозиторий.
ЦитироватьИ еще по поводу Flip - я бы его поставил дефолтным.
Я против, по крайней мере до тех пор, пока не избавимся от этих лишних окон и кадров, которые он вызывает, если конечно это вообще можно устранить. Вообще, функции, использующие внешние процессы, наоборот, менее надежные, чем совмещенные.
Название: Re: Проблемы с D3D11 VP на первых DirectX11 - видеокартах от компании ATI/AMD
Отправлено: Aleksoid1978 от 26 марта 2021, 13:44:54
Вот про что я и говорил - D3D11 VP(ну получается плюс swap = Discard) сам не может вывести картинку на твоей Radeon карте :)
Что я сделал - полностью работает D3D11 VP, он же используется для ресайза - но перед выводом идет дополнительное копирование во "временную" текстуру и только потом "вывод".

Просто так делать я не буду - желательно конечно бы выяснить причину такого поведения. Ну или тупо сделать так для "красных", ждем что скажет v0lt по этому поводу.
Название: Re: Проблемы с D3D11 VP на первых DirectX11 - видеокартах от компании ATI/AMD
Отправлено: Evgeniy1990 от 26 марта 2021, 13:52:19
Aleksoid1978,
Цитироватьполностью работает D3D11 VP, он же используется для ресайза - но перед выводом идет дополнительное копирование во "временную" текстуру и только потом "вывод".
Значит, ATI/AMD-видеокарты могут работать только так и никак иначе. Сами же прекрасно понимаете, что у AMD имеются свои особенности и заморочки, вот поэтому им и требуется дополнительное копирование.
Название: Re: Проблемы с D3D11 VP на первых DirectX11 - видеокартах от компании ATI/AMD
Отправлено: Aleksoid1978 от 26 марта 2021, 13:56:46
Но опять же - не все. Ладно, посмотрим/подумаем :)
Название: Re: Проблемы с D3D11 VP на первых DirectX11 - видеокартах от компании ATI/AMD
Отправлено: Evgeniy1990 от 26 марта 2021, 13:57:03
Aleksoid1978,
ЦитироватьНу или тупо сделать так для "красных",
Естественно, сделать. Какие тут могут быть еще вопросы? Уже все перепроверили сотню раз, а то и больше.
Ну, хорошо, подождем тогда ответа от V0lt, как скажете. Хотя, с другой стороны, опять же, чего ждать?
Видно же, что по другому работать это не будет, только так, используя дополнительное копирование во "временную" текстуру.
Название: Re: Проблемы с D3D11 VP на первых DirectX11 - видеокартах от компании ATI/AMD
Отправлено: Aleksoid1978 от 26 марта 2021, 13:59:44
Вот еще "перепроверь" на Flip/Discard - https://disk.yandex.ru/d/ZY8JfDJ1_8RYZA
Название: Re: Проблемы с D3D11 VP на первых DirectX11 - видеокартах от компании ATI/AMD
Отправлено: Evgeniy1990 от 26 марта 2021, 14:30:20
Aleksoid1978,
Цитата: Aleksoid1978 от 26 марта 2021, 13:59:44
Вот еще "перепроверь" на Flip/Discard - https://disk.yandex.ru/d/ZY8JfDJ1_8RYZA
Проверил второй тестовый билд.
Аналогично - полный порядок, есть нормальная картинка при конфигурации: D3D11 VP + Discard + DXVA2/Software Decoder. :)
Название: Re: Проблемы с D3D11 VP на первых DirectX11 - видеокартах от компании ATI/AMD
Отправлено: wanezhiling от 26 марта 2021, 16:55:37
Intel Tigerlake also has an issue with d3d11 vp + discard mode...

I've reported to intel: https://community.intel.com/t5/Graphics/image-broken-with-direct3d11-discard/td-p/1266240
Название: Re: Проблемы с D3D11 VP на первых DirectX11 - видеокартах от компании ATI/AMD
Отправлено: V0lt от 26 марта 2021, 18:51:54
Цитата: Evgeniy1990 от 26 марта 2021, 08:53:40
Итак, был найден первый виновник - это commit 4aa1750 (build 1656) (https://github.com/Aleksoid1978/VideoRenderer/commit/4aa1750edbb3de3fc999f3b92dd80323730805b8)
Начиная с него, пропала нормальная картинка в режимах FSW/FSE, которая была ранее.
Надо попробовать убрать все изменения в CDX11VideoProcessor::Process после 1655. Все равно там только "оптимизация для 8k", которую никто полноценно не тестировал (потому что очень долго и муторно), и без которой можно жить.
Название: Re: Проблемы с D3D11 VP на первых DirectX11 - видеокартах от компании ATI/AMD
Отправлено: Aleksoid1978 от 27 марта 2021, 04:10:10
Цитата: wanezhiling от 26 марта 2021, 16:55:37
Intel Tigerlake also has an issue with d3d11 vp + discard mode...

I've reported to intel: https://community.intel.com/t5/Graphics/image-broken-with-direct3d11-discard/td-p/1266240
It's fix too.
Название: Re: Проблемы с D3D11 VP на первых DirectX11 - видеокартах от компании ATI/AMD
Отправлено: Aleksoid1978 от 27 марта 2021, 04:11:27
Цитата: V0lt от 26 марта 2021, 18:51:54
Цитата: Evgeniy1990 от 26 марта 2021, 08:53:40
Итак, был найден первый виновник - это commit 4aa1750 (build 1656) (https://github.com/Aleksoid1978/VideoRenderer/commit/4aa1750edbb3de3fc999f3b92dd80323730805b8)
Начиная с него, пропала нормальная картинка в режимах FSW/FSE, которая была ранее.
Надо попробовать убрать все изменения в CDX11VideoProcessor::Process после 1655. Все равно там только "оптимизация для 8k", которую никто полноценно не тестировал (потому что очень долго и муторно), и без которой можно жить.
Все теперь нормально, все я долго тестировал. Но что поделать если на "некоторых" вендорах косяки в драйверах и они не могут правильно все делать :)
Название: Re: Проблемы с D3D11 VP на видеокартах ATI/AMD [Исправлено]
Отправлено: V0lt от 27 марта 2021, 07:27:10
Цитата: Aleksoid1978 от 27 марта 2021, 04:11:27Все теперь нормально, все я долго тестировал. Но что поделать если на "некоторых" вендорах косяки в драйверах и они не могут правильно все делать :)
О тестировании
DX11VideoProcessor.cpp
22.01.2021 - f4bbdf1b5358d823f3e840bb74133882cace6e4c
Убрано лишнее копирование для случая, когда используется DXVA2 или D3D11 VP и не требуются какая-либо доп. обработка.
...
08.02.2021 - cf590093f9732c77b417a1f4a5def828015eb5c2
Если выходной кадр вылезает за границы окна или полного экрана, то добавляем дополнительную операцию копирования после DXVA2 VP и D3D11 VP. Пока нет лучшего решения.


В итоге мне потребовалось 17 дней, чтобы учесть все последствия оптимизации. Что было исправлено, можно увидеть в истории DX11VideoProcessor.cpp для указанного интервала. Тестировал много чего: корректность картинки после ресайза, поворота, отражения; правильность вызова дитеринга, адекватность статистики (проверял ли субтитры, не помню). Корректность картинки часто определяется рассматриванием пикселей на специальных видео - это требует много времени. Для тестирования у меня есть все три вендора. Полную отладку делал на Nvidia, а  на остальных делал быстрые проверки.

Именно по причине сложности и объема тестирования Я не стал заниматься очередным ускорением. Если ты учел все указанное - молодец. Я так не смогу, времени нет.
Название: Re: Проблемы с D3D11 VP на видеокартах ATI/AMD [Исправлено]
Отправлено: wanezhiling от 27 марта 2021, 08:43:56
Цитата: Aleksoid1978 от 27 марта 2021, 04:10:10
Цитата: wanezhiling от 26 марта 2021, 16:55:37
Intel Tigerlake also has an issue with d3d11 vp + discard mode...

I've reported to intel: https://community.intel.com/t5/Graphics/image-broken-with-direct3d11-discard/td-p/1266240
It's fix too.

To be honest you needn't fix this for intel, i think it's better let intel official fix this issue. :)
Название: Re: Проблемы с D3D11 VP на видеокартах ATI/AMD [Исправлено]
Отправлено: Evgeniy1990 от 27 марта 2021, 09:48:44
wanezhiling,
ЦитироватьTo be honest you needn't fix this for intel, i think it's better let intel official fix this issue.
If Intel makes the change on our side, then it will be possible to remove the change on our side. :)
Название: Re: Проблемы с D3D11 VP на видеокартах ATI/AMD [Исправлено]
Отправлено: Evgeniy1990 от 31 марта 2021, 04:36:21
wanezhiling,
ЦитироватьIntel Tigerlake also has an issue with d3d11 vp + discard mode...
Not only Intel has a damaged picture, ATI / AMD video cards are also guilty of this (https://disk.yandex.ru/i/IOd9_wjDDZzoKg).
NVIDIA, as usual, holds the lead in terms of video capabilities and video support.