1. Если вы только начинаете программировать на ассемблере и не знаете с чего начать, тогда попробуйте среду разработки ASM Visual IDE
    (c) на правах рекламы
    Скрыть объявление

Внутренности Desktop Duplication API

Тема в разделе "WASM.WIN32", создана пользователем Vicshann, 10 ноя 2020.

  1. Vicshann

    Vicshann New Member

    Публикаций:
    0
    Регистрация:
    22 сен 2020
    Сообщения:
    28
    Какой интерфейс WDDM оно использует и можно ли до него добраться с пользовательского уровня?
    WDDM же вроде открытый? Почему-то не могу найти то, что мне нужно. Хожу кругами по сайтам Microsoft:)

    Мне нужно только по запросу делать снимки, и курсор не нужен.
    Страшно подумать если система будет где-то кэшировать несколько 4К скриншотов в формате RGBA:)
    Нужно минимизировать использование CPU, GPU и памяти.
    Данные оконного менеджера об изменении регионов не нужны, так как мне оно надо в основном для полноэкранного видео и 3D.
    И формат в идеале планарный YUV, так как нужны только данные о яркости(меньше данных слать по шине).
    Не знаю что хуже, слать данные яркости в системную память и обрабатывать на CPU, или обрабатывать шейдером на GPU и запрашивать результат оттуда.
    Может я не понимаю как этот "Desktop Duplication API" работает, но он точно лишнее делает, хотя бы с курсором.
    Если то, что мне нужно не возможно через "Desktop Duplication API", то придется делать по отдельности для каждого вендора GPU, фактически три набора API для получения содержимого видео буфера.

    Сам IDXGIOutputDuplication использует эти функции GDI32.DLL:
    D3DKMTCreateOutputDupl
    D3DKMTOutputDuplGetFrameInfo
    D3DKMTOutputDuplGetMetaData
    D3DKMTOutputDuplGetPointerShapeData
    D3DKMTOutputDuplReleaseFrame

    Вообще, не похоже что это приличная замена для специализированных API, вроде NvAPI.
     
  2. Andrey333

    Andrey333 New Member

    Публикаций:
    0
    Регистрация:
    30 янв 2020
    Сообщения:
    12
    Vicshann, работал с DDA. Как раз та же задача, что у вас (скриншот по запросу и без курсора). Все получалось. Но это было давно, плохо помню.
    Да, у них там как-то скудно описано. Тоже матчасти не хватало. Мне помнится помогла вот эта статья и приложенные исходники.