MPC-BE forum

MPC-BE => Баг Репорт / The bug report => Архив / Archive => Тема начата: V0lt от 23 октября 2016, 14:50:28

Название: "Прозрачный" полноэкранный Direct3D на дополнительном экране [Испр.]
Отправлено: V0lt от 23 октября 2016, 14:50:28
Баг получается следующим образом.
К дискретной видеокарте подключается основной монитор (DVI) и дополнительный телевизор (HDMI).
Включаем опцию "Полноэкранный Direct3D" и выбираем телевизор в качестве дисплея для полного экрана.
(http://s017.radikal.ru/i440/1610/c8/42d6f7830844t.jpg) (http://radikal.ru/big/ht5jtwhgyjxlo)
Запускаем плеер на мониторе, запускаем видеофайл и переходим на полный экран.

В итоге получаем черный экран в окне на мониторе (что правильно) и полностью прозрачное полноэкранное окно на телевизоре. Это прозрачное окно можно закрыть, если кликнуть курсором в правом верхнем угле (при наведении курсор меняется на палец).
Название: "Прозрачный" полноэкранный Direct3D на дополнительном экране [Испр.]
Отправлено: Aleksoid1978 от 23 октября 2016, 15:04:29
Смотрю именно так - ничего подобного не наблюдаю. Единственное что - используется автопереключалка частот.
Название: "Прозрачный" полноэкранный Direct3D на дополнительном экране [Испр.]
Отправлено: Dimbat от 23 октября 2016, 15:12:35
Переключалка ни при чем (глюк что с ней, что без нее), сама по себе пашет нормально - меняет частоту как надо, телек мигает, но изображения тупо нет.
[merge_posts_bbcode]Добавлено: 2016-10-23 15:12:35[/merge_posts_bbcode]

V0lt, а у тебя сразу (с первого вывода) проявился баг или после переключений туда-сюда?
Название: "Прозрачный" полноэкранный Direct3D на дополнительном экране [Испр.]
Отправлено: Aleksoid1978 от 23 октября 2016, 15:19:17
V0lt

Ну если можешь воспроизвести - ну так почини, думаю причину найти не сложно ... хотя прозрачное окно думаю будет сильно мешать отладке :)
Название: "Прозрачный" полноэкранный Direct3D на дополнительном экране [Испр.]
Отправлено: V0lt от 23 октября 2016, 15:26:44
Dimbat
Перезапустил комп и ничего не дергая сразу получаю баг.
Ранее не ловил, т.к. другое подключение было и неправильно проверял.
Название: "Прозрачный" полноэкранный Direct3D на дополнительном экране [Испр.]
Отправлено: Aleksoid1978 от 23 октября 2016, 15:35:26
Ставьте 10 - у меня на ней нет бага ни на одной из система :)
Название: "Прозрачный" полноэкранный Direct3D на дополнительном экране [Испр.]
Отправлено: Dimbat от 23 октября 2016, 15:42:42
V0lt, я к тому, что баг имеет какой-то накопительный эффект (иначе не назовешь) в пределах профиля (не сессии), я хз как объяснить. Т.е. ни разу не запущенный плеер выдавал баг не сразу, а после переключений d3dfs-окно-d3dfs. Потом перманентно уже ))
И проверь из-под администратора запуск в текущей учетке.
[merge_posts_bbcode]Добавлено: 2016-10-23 15:42:42[/merge_posts_bbcode]

Цитата: Aleksoid1978Ставьте 10 - у меня на ней нет бага ни на одной из система :)
:)
Весело и другое, что баг от 1591 начинается - ща набегут в ветку ХРдрочеры, типа "ага - мы предупреждали, ХР форева, верните поддержку"
Название: "Прозрачный" полноэкранный Direct3D на дополнительном экране [Испр.]
Отправлено: V0lt от 23 октября 2016, 15:49:33
Aleksoid1978
Это наблюдается и на свежайшем бета-билде Win10 (http://forum.ru-board.com/topic.cgi?forum=5&topic=48073&start=3540#2).

В общем, что-то не так с переключением. Непонятно что именно тупит: декодер или рендерер. По логу сначала ресетится рендерер, затем декодер. Можно разово нормально переключиться, если нажать на паузу, а затем Alt+Enter и Плей.
[merge_posts_bbcode]Добавлено: 2016-10-23 15:49:33[/merge_posts_bbcode]

Хотя и без паузы первый раз по Alt+Enter часто переключает нормально, но на второй - фигушки.
Название: "Прозрачный" полноэкранный Direct3D на дополнительном экране [Испр.]
Отправлено: Aleksoid1978 от 23 октября 2016, 15:53:53
Все верно - сперва ресетится рендерер, затем он вызывает ресет декодера.

То что ты описываешь больше похоже вот на что - окно для D3D FS создается на одном устройстве вывода, а само D3D FS видимо на другом.

Но самое что интересное - как это могло проявляться после урезания WinXP, вообще не понятно. :)
Название: "Прозрачный" полноэкранный Direct3D на дополнительном экране [Испр.]
Отправлено: V0lt от 24 октября 2016, 12:01:10
В общем кое что найдено.
При рисовании на полном экранеhr = m_pD3DDevEx->PresentEx(NULL, NULL, NULL, NULL, NULL);получаем "положительный" ответ S_PRESENT_OCCLUDED.
Цитата из MSDN (https://msdn.microsoft.com/ru-ru/library/windows/desktop/bb219624%28v=vs.85%29.aspx):
ЦитироватьOccluded applications can continue rendering and all calls will succeed, but the occluded presentation window will not be updated.
Т.е. мы чего-то там рендерим, но это никуда не выводиться.
[merge_posts_bbcode]Добавлено: 2016-10-24 12:01:10[/merge_posts_bbcode]

Проблему вроде обошли.
Сборка для тестов - https://yadi.sk/d/fBLNEkmDxUyVw
Название: "Прозрачный" полноэкранный Direct3D на дополнительном экране [Испр.]
Отправлено: Dimbat от 24 октября 2016, 12:32:14
V0lt, у меня всё разом заработало.
Название: "Прозрачный" полноэкранный Direct3D на дополнительном экране [Испр.]
Отправлено: usalex от 24 октября 2016, 14:11:03
Цитата: Aleksoid1978...похоже вот на что - окно для D3D FS создается на одном устройстве вывода, а само D3D FS видимо на другом.
Во-во!
У меня в один день именно так и было: на ТВ была картинка в оконном режиме, несмотря на галку "Запускать файлы в полном экране", но она была вообще без рамки - просто шла картинка без всякого обрамления, а рамка была в это время на мониторе :)
Через несколько часов само пришло в норму и больше не проявлялось.
Название: "Прозрачный" полноэкранный Direct3D на дополнительном экране [Испр.]
Отправлено: V0lt от 24 октября 2016, 15:03:21
Dimbat
Спасибо. Изменения залил в r2097.

usalex
Я думаю, здесь другой случай. Все работает как будто все хорошо, но ничего не рисуется, и это типа штатный режим. Почему такое происходит, мы пока не знаем.