Проблемы с D3D11 VP на видеокартах ATI/AMD [Исправлено]

Автор Evgeniy1990, 26 марта 2021, 08:50:13

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

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

Evgeniy1990

Проблемы с 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).
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.

Evgeniy1990

#1
Ход тестирования, поиск поломок, отчеты и наблюдения:

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)
Начиная с него, пропала нормальная картинка в режимах FSW/FSE, которая была ранее.

Исправлено в commit e7c503d (build 1682).

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

Исправлено в commit 0dfe831 (build 1678).

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

Исправлено в commit e7c503d (build 1682).
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

Я же написал что зависание в DX9 уже не должно быть.
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

Evgeniy1990

Aleksoid1978,
ЦитироватьЯ же написал что зависание в DX9 уже не должно быть.
Проверил commit 0dfe831 (build 1678) - зависание, при обратном возвращении на DX9 API полностью устранено.
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

А все остальное, чёрный экран - было изначально, тут что-то при использовании VP, а то что иногда и была картинка - так это просто по программной ошибке юзались шейдеры для вывода, мои коммиты просто сделали проверки более чёткие.
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

Evgeniy1990

#5
Aleksoid1978,
Цитата: Aleksoid1978 от 26 марта 2021, 11:27:47
А все остальное, чёрный экран - было изначально, тут что-то при использовании VP, а то что иногда и была картинка - так это просто по программной ошибке юзались шейдеры для вывода, мои коммиты просто сделали проверки более чёткие.
Увы, но нет, обратите пожалуйста внимание на commit f4bbdf1 (build 1617).
Нормальная картинка пропала задолго до ваших коммитов.
Увы и ах, видеокартам ATI/AMD, в отличие от NVIDIA, все же требуется лишнее копирование и доп. обработка для 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.

Aleksoid1978

Ну это в принципе то про что я и говорил. Получается как сделали чистый VP - картинка пропала. Так что - юзаем шейдеры. Не думаю что получиться решить этот вопрос, т.к. причина так и не известна.

Делать "хаки" для старых AMD/ATI - не думаю что это правильный путь :) Да и не возможно перечислить все возможные варианты адаптеров.
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

Evgeniy1990

Aleksoid1978,
ЦитироватьДелать "хаки" для старых AMD/ATI - не думаю что это правильный путь
Уж лучше реализовать "хаки" для таких случаев, чем видеть и наблюдать, прости меня пожалуйста, всю эту жуть и дичь, которая сейчас творится. Да, я имею ввиду этот "квадрат Малевича" и прочий "треш" с ним связанный.

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

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

Evgeniy1990

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? Да не может такого быть, тем более он идет у нас по умолчанию, как наиболее стабильный и оптимальный.
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

Да хз что не так с Discard, но раз причину нашли - юзаем Flip и все.

А по поводу всех этих изменений и т.д. - вот проверяем на D3D11 VP и Discard/Flip - https://disk.yandex.ru/d/GJ9CiNhl_0qKTA
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

Aleksoid1978

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

Evgeniy1990

Aleksoid1978,
ЦитироватьА по поводу всех этих изменений и т.д. - вот проверяем на D3D11 VP и Discard/Flip - https://disk.yandex.ru/d/GJ9CiNhl_0qKTA
Проверил ваш тестовый билд. Вот теперь другое дело, полностью присутствует нормальная картинка, при конфигурации: D3D11 VP + Swap effect: Discard + DXVA2/Software. :) Можете вносить свои изменения в Git-репозиторий.
ЦитироватьИ еще по поводу Flip - я бы его поставил дефолтным.
Я против, по крайней мере до тех пор, пока не избавимся от этих лишних окон и кадров, которые он вызывает, если конечно это вообще можно устранить. Вообще, функции, использующие внешние процессы, наоборот, менее надежные, чем совмещенные.
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

Вот про что я и говорил - D3D11 VP(ну получается плюс swap = Discard) сам не может вывести картинку на твоей Radeon карте :)
Что я сделал - полностью работает D3D11 VP, он же используется для ресайза - но перед выводом идет дополнительное копирование во "временную" текстуру и только потом "вывод".

Просто так делать я не буду - желательно конечно бы выяснить причину такого поведения. Ну или тупо сделать так для "красных", ждем что скажет v0lt по этому поводу.
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

Evgeniy1990

Aleksoid1978,
Цитироватьполностью работает D3D11 VP, он же используется для ресайза - но перед выводом идет дополнительное копирование во "временную" текстуру и только потом "вывод".
Значит, ATI/AMD-видеокарты могут работать только так и никак иначе. Сами же прекрасно понимаете, что у AMD имеются свои особенности и заморочки, вот поэтому им и требуется дополнительное копирование.
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.