Как изменить прерывание видеокарты

Прерывание GPU

Была доступна более новая модель вытеснения GPU, начиная с Windows 8. В этой модели операционная система больше не позволяет отключить вытеснение пакетов прямого доступа к памяти (DMA) GPU и гарантирует, что запросы на вытеснения будут отправляться на графический процессор до начала процесса обнаружения и восстановления времени ожидания (ТДР) .

Требование Описание
минимальная версия модели видеодрайверов (WDDM) Windows 1,2
минимальная версия Windows 8
Реализация драйвера — полная графика и визуализация Обязательный
Требования и тесты вхлк Device. Graphics. Тестирование вытеснения, Device. Graphics. Флипонвсинкммио

Если долго выполняющиеся пакеты не могут быть успешно вытеснены, работа с высокоприоритетным графическим процессором, например работа, необходимая для диспетчер окон рабочего стола (DWM), может быть отложена, что приведет к ошибкам во время перехода и анимации окна. Кроме того, долгосрочные пакеты GPU, которые не могут быть вытеснены, могут привести к тому, что процесс ТДР будет многократно сбрасывать GPU, и в конечном итоге может возникать критическая ошибка системы.

Примечание . все драйверы минипорта экрана WDDM 1,2 должны поддерживать модель приоритетного прерывания Windows 8. тем не менее, когда в работе, драйверы WDDM 1,2 могут также отклонять модель приоритетного прерывания Windows 8 и хранить Windows 7 в планировщике подсистемы ядра Microsoft DirectX graphics.

Интерфейсы драйверов устройств с вытеснением GPU (ДДИС)

для драйвера мини-порта дисплея доступны следующие интерфейсы драйверов устройств (ддис) для реализации модели вытеснения Windows 8 GPU.

Реализация драйвера минипорта экрана

выполните следующие общие действия для реализации модели вытеснения Windows 8 GPU в драйвере мини-порта экрана:

  1. Скомпилируйте драйвер в заголовках, имеющих DXGKDDI_INTERFACE_VERSION> = DXGKDDI_INTERFACE_VERSION_WIN8.
  2. объявите поддержку для модели вытеснения Windows 8 GPU, задав для членов примптионаваре и мултиенгинеаваре структуры DXGK_VIDSCHCAPS значение 1. чтобы обеспечить поддержку модели вытеснения Windows 7, установите для примптионаваре значение 0.
  3. Укажите поддерживаемый уровень гранулярности вытесненности в структуре D3DKMDT_PREEMPTION_CAPS , которая принимает постоянные значения из перечислений D3DKMDT_GRAPHICS_PREEMPTION_GRANULARITY и D3DKMDT_COMPUTE_PREEMPTION_GRANULARITY .
  4. Если оборудование поддерживает отложенное переключение контекста, отправьте буфер нулевой длины в функцию дксгкддисубмиткомманд и установите для элемента псубмиткомманд— >flags— >контекстсвитч значение 1. Обратите внимание на обсуждение в элементе контекстсвитч структуры DXGK_SUBMITCOMMANDFLAGS .
  5. Установите выделение контекста GPU и выделение контекста устройства, вызвав функцию дксгккбкреатеконтексталлокатион . Обратите внимание на конкретные инструкции и ограничения, указанные в разделе Примечания для функции.
  6. Вызовите функцию дксгккбдестройконтексталлокатион , чтобы уничтожить выделение контекста GPU и выделение контекста устройства, созданные с помощью дксгккбкреатеконтексталлокатион.
  7. При подготовке буфера DMA в ответ на вызов функции дксгкддибуилдпагингбуффер инициализируйте ресурс контекста, заполнив внутреннюю структуру инитконтекстресаурце в структуре DXGKARG_BUILDPAGINGBUFFER . Если ресурсы контекста будут исключены или перемещены, диспетчер видеопамяти сохранит содержимое ресурсов контекста.
  8. Драйвер должен поддерживать перевернутую память ввода-вывода при следующей вертикальной синхронизации. в Windows 8 планировщик GPU пытается отключать оборудование, даже если происходит ожидание перелистывания. Таким образом, чтобы предотвратить уничтожение и визуализацию артефактов, драйвер должен поддерживать модель зеркального отображения ввода-вывода с отображением в памяти, а также должен задать элемент флипонвсинкммио структуры DXGK_FLIPCAPS равным 1 и поддерживать операции, описанные в разделе флипонвсинкммио.

Рекомендации по сопоставлению памяти в реализации

создайте надежный драйвер, который поддерживает модель вытеснения Windows 8 GPU и обеспечивает качество взаимодействия с пользователем, выполнив следующие рекомендации:

  • Запрос на прерывание буфера MID-DMA от графического процессора при отправке планировщиком ядра DirectX Graphics (Дксгкрнл) команды на вытеснение. Аппаратные устройства, имеющие более детализированную степень детализации при вытеснении буфера в середине DMA, должны повысить эффективность работы клиентов.
  • Разрешить повторное использование идентификаторов ограждения команды подкачки: Если запрос на вытеснение привел к вытеснению команд подкачки в очереди оборудования, то планировщик Дксгкрнл повторно отправит заданные команды разбиения на страницы с теми же идентификаторами ограждения, которые изначально использовались для них, а команды подкачки будут планироваться до любых других команд в этой подсистеме. Команды без подкачки будут повторно отправлены с новыми назначенными идентификаторами ограждений.
  • Укажите список расположений исправлений для разделенных буферов DMA — см. раздел разделение буфера DMA.
  • Доступен режим проверки, называемый обнаружением утечек привязки, который проходит через список расположений исправлений и отклоняет пакеты, которые не отменяют привязку или не переносят выделения для каждого пакета разбиения. Некоторые виртуальные адреса аппаратной поддержки обеспечивают дополнительный уровень косвенного обращения, который может сделать проверку ненужной. В этом случае, чтобы указать, что драйвер выдается из режима проверки, установите для элемента нодмапатчинг структуры DXGK_VIDSCHCAPS значение 1.
  • в Windows 7 планировщик дксгкрнл гарантирует, что все разделенные пакеты DMA, соответствующие одной и той же команде прорисовки, выполняются последовательно без переключения на другой контекст визуализации. в модели Windows 8ного вытеснения планировщик может выполнять рендеринг пакетов из другого контекста между двумя раздельными пакетами, которые соответствуют одной команде рендеринга. Как следствие, драйверы, которые знают о вытеснении, должны выполнять отправку разделенных и частичных пакетов DMA таким же образом, как обычное полное отправление пакетов. В частности, состояние GPU необходимо сохранить или восстановить на границе для таких отправок.
  • Драйвер, поддерживающий выгрузку по приоритету, не должен изменять содержимое разделенного буфера DMA при широковещательной рассылке на несколько адаптеров в режиме связанного видеоадаптера (LDA), где несколько физических GPU связаны с одним, более быстрым виртуальным GPU. это обусловлено тем, что в модели Windows 8ного вытеснения планировщик больше не гарантирует синхронное выполнение последовательности пакетов с разделением, не переключаясь на другой контекст. Драйвер, изменяющий содержимое разделенного пакета DMA, нарушит целостность данных пакета, поскольку пакет был выполнен в другом подсистеме, он будет работать с той же копией данных буфера DMA.
  • в модели Windows 8ного прерывания GPU планировщик дксгкрнл включает вытеснение для пакетов, имеющих связанные примитивы синхронизации «сигнал при отправке». Если устройство использует примитивы синхронизации «сигнал при отправке» в сочетании с состояниями ожидания на основе оборудования, оно должно поддерживать возможность замещения инструкции ожидания до того, как условие ожидания будет удовлетворено.

Сертификационные требования к оборудованию

Сведения о требованиях, которым должны удовлетворять устройства при реализации этой функции, см. в соответствующей документации вхкк на устройстве. Graphics. Тестирование вытеснений и Device. Graphics. Флипонвсинкммио.

Дополнительные сведения о функциях, добавленных с помощью Windows 8, см. в разделе функции WDDM 1,2 .

Источник

Для чего видео карте прерывание?

Читаю аппаратную организацию ПК — что-то не пойму для чего устройствам вывода нужны прерывания?

Re: Для чего видео карте прерывание?

Ну, прерывания нужны вообще всем устройствам, кроме самого процессора. Когда устройство хочет занять процессорное время (для выполнения какой-нибудь операции, например, перекачки данных с винта в память), это устройство устанавливает сигнал прерывания на процессор. Процессор, когда видит, что его хотят «прервать», в зависимости от приоритета выставленного прерывания, либо моментально прекращает делать то, что делал, либо заканчивает свою задачу. Потом он посылает устройству сигнал подтверждения того, что устройство может пользоваться ресурсамт процессора, и устройство начинает работать. Вообще-то, обработкой аппаратных прерываний занимается не сам процессор, а контроллер прерываний. Так вот, если твоя видеокарта, должна изменить картинку на экране, то она выставляет процессору запрос на прерывание, дожидается подтверждения, а потом и говорит процессору, мол, хочу перегнать столько-то байт из такого-то места в ОЗУ к себе в память, и процессор начинает обслуживать запрос. В памяти видеокарты появляются новые данные, которые и меняют изображение на экране. Вот, собственно, так грубо и очень схематически о том, «зачем нужны устройствам прерывания». :)

Re: Для чего видео карте прерывание?

Naskolko mne izvestno Nezachem :) t.e. esli eto videokarta a ne akselerator :) esli akselerator to nadeyus ponyatno zachem. Dlya obychnoi vidyuhi preryvaniya ne nuzhny .

Re: Для чего видео карте прерывание?

Народ, извиняюсь — но ничего не понял — Если оно не нужно — то для чего винда так настойчиво назначает его видюхе — если его отключаешь в бивесе. А если нужно — то зачем?(как я понял — процессор просто пересылает данные в соответствующие порты — а что в портах — то сразу появляется в регистрах(или памяти?) видеокарты и отображается на экране — все синхронизируется clockами.)

Re: Для чего видео карте прерывание?

2master. Так, ребята, вы чего это. Все устройства, в конечном итоге обмениваются информацией. Руководит этим обменом, практически всегда процессор, за исключением случаев обмена данными между устройствами IDE/SCSI и памятью. В последнем случае, этим обменом занимается Контроллер прямого доступа к памяти (DMA — direct memory access) или Контроллер Скази. В любом случае вся информация передается по шине данных по адресам выставленным на шине адреса, и если шинами не управляют контроллеры DMA или SCSI, то это делает микропроцессор. Например, для того, чтобы нарисовать картинку на экране, программа, которая этим занимается (например, движок игры Quake), высчитывает все необходимые параметры и запрашивает с помощю прерывания на прцессор, пересылку данных по шине данных с адреса, установленного на шине адреса по адресу памяти видеокарты. А картинка, появляющаяся на экране — это и есть отображение содержимого памяти видеокатры. А по поводу акселераторов могу сказать, что все рассчеты и зарисовки ведутся процессором акселератора, без «затрагивания» микропроцессора. В любом случае, прерывание видеокарте нужно хотя бы для того, чтобы сказать процессору, что процесс зарисовки окончен и он может заниматься своими делами. При этом процессор передает управляющей программе (возьмем ту же игру Quake) сигнал о том, что видеокарта нарисовала картинку и готова получать новые данные, на что игра опрашивает нажатые клавиши и мышки, производит расчет данных и, опять же записывает данные в память. И эта же самая управляющая программа дожидается подтверждения успешного окончания зарисовки экрана (которое видеокарта передает с помощью процессора, выставляя на него прерывание), для продолжения опросов и расчетов. Постарался изложить как можно подробнее, но, если кто не понял, Ай’м сорри. :)))

Re: Для чего видео карте прерывание?

nazarov_serg303 Хм. а разьве для зарисовывания картинки на мониторе требуется разное время? Если нет — то почему бы процессору тупо не обновлять содержимое видеопамяти через определенное число тактов?(и совсем не пользоваться прерыванием?)

Re: Для чего видео карте прерывание?

1) Ya govoryu kartochka imayu vvidu kartu video vyvoda bez accel 2) Eti karty imeyut svoyu sobstvennuyu pamyat otobrazhaemuyu na adresnoe prostrastvo processora 3) Karta postoyanno scaniruet svoyu pamyat preobrazuya v analogoviy signal. 4) Dlya izmeneniya parametrov raboty videokarty ispolzueyutsya porty vvoda/vyvoda 5) Eto vse chem zanimaetsya videokarta. 6) Nu i blin zachem ei preryvanie . 7) dlya kartochek s accel sushestvuet massa primeneniy. Delo v tom chto ee mozhno poprosit risovat graficheskie primitivy o zavershenii svoey raboty ona MOZHET soobshat vyzvav preryvanie 8) Vsem PCI slotam sootvestvuet preryvanie nuzhno ono ili net. Eshe voprosy ?

Re: Для чего видео карте прерывание?

2master: убедил, молчу, т.к. не нахожу аргументов за недостатком знаний. :) 2nazarov_serg303: Это бы занимало очень много процессорного времени. Например, если у тебя на экране висит статическая картинка, то, пока не происходит никаких изменений (не двигаешь мышкой, не клацаешь кныпочками), ее абсолютно не стОит перерисовывать.

Re: Для чего видео карте прерывание?

nazarov_serg303 Akan, почему бы это занимало процессорное время? В случае когда не двигаешь мышкой — Процессор например ничего не посылает в память видеокарты — там находится данные которые не меняются с тактами вывода на экран и на него(экран) просто отображаются

Re: Для чего видео карте прерывание?

Прерывание может использоваться играми для синхры с разверткой: запись в видеопамять выполнять во время обратного хода луча (когда содержимое видеопамяти не посылается на монитор). Если прога постоянно работает с видеопамятью (как FPSы), и при этом не делает синхру, то картинка на экране может иногда получаться искаженной. Почему? Допустим, прога обновила видеопамять, когда луч находится в средней строке экрана. Тогда получится, что верхняя часть экрана содержит старую картинку, нижняя — новую. Если обновление видеопамяти происходит часто, быстро и несинхронно, то на экране будет полный бардак. Поэтому видеокарту можно запрограммировать на выдачу прерывания по началу обратного вертикального хода луча (когда он из правого нижнего угла перемещается в левый верхний). В это время прога должна обновить видеопамять. Например, просто переключением отображаемой страницы (в этой странице картинка должна быть уже создана).

Re: Для чего видео карте прерывание?

Nazarov_serg303 Пасибо, все более менее понятно — карточка обрабатывает данные для картинки разное время — в зависимости от модели самой карты, разрешения и т.п. — откуда процу знать — за какое время карточка выполнит свою работу(а луч экрана возвращается в это время в противоположный угол) — а когда все вывела на экран — посылает сигнал процу — давай след. порцию данных. Так?

Re: Для чего видео карте прерывание?

Nazarov_serg303 Блин, не туда вставил «а луч экрана . «

Re: Для чего видео карте прерывание?

to last anonymous
ne tak.
proc nikogda neznaet narisovalos na ekrane chtoto ili net.
pro obratniy hod lucha kartinka poluchitsya ne iskazhennoi a mozhet migat. nikakih prervaniy ne proishodit a lish mozhno chitat iz Porta.
Chtoby ne migala na sovremennyh kartah ispolzuyut double buffering.
t.e. delayut dva bufera. v odin pishut drugoi risuetsya potom pereklyuchayutsya.Proga dolzhna uspet zapihat v active buffer vse dannye inache opyat migat nachnet. na vse u progi est 1/VertSync sec. chego kak pravilo hvataet za glaza.
i est eshe knizhka takaya iz Biblioteki sistemnogo programmista. Tom 3
avtory Bratya Frolovy. Izdatelstvo Dialog-Mifi pravda etoi knige uzhe let 6-7 nazyvaetsya ona programmirovanie videoadapterov.
Kstati eshe usaetsya int v AGP — kogda kartochke nuzhno vzyat pamyati pod tekstury.
No naskolko ya pomnyu eto delaetsya odin raz pri nepomnyu sovsem kakih obstoyatelstvah.

Re: Для чего видео карте прерывание?

master, почему раскладку не настроишь? Хотя писать любишь :)))

Re: Для чего видео карте прерывание?

Mne ne raskladku nado nastraivat :) ona u меня как видишь работает toka na translite ya pishu namnogo bystree a esli byt bolee tochnym na russkom nu ochen medlenno :)

Re: Для чего видео карте прерывание?

nazarov_serg303 Эх. — задействовал кучу народа, а так ничего и не понял — буду читать книжки. — больше не пишите. Всем THANKS!

Re: Для чего видео карте прерывание?

Прерывание видюхе нужно для захвата кадров. Если, конечно, есть TV-тюнер :).

Источник

Рекомендуем:  Как заменить батарейку на ноутбуке самсунг
Adblock
detector