Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek obsahuje pokyny k zápisu části ovladače v režimu jádra (KMD) ovladače Microsoft Compute Only Driver (MCDM), který se označuje také jako ovladač jen pro výpočty.
Projděte si také následující články:
Soubor INF ovladače
Zařízení MCDM patří do třídy ComputeAccelerator , která musí být zadána v souboru INF ovladače:
[Version]
...
Class=ComputeAccelerator
ClassGuid={F01A9D53-3FF6-48D2-9F97-C8A7004BE10C}
...
Inicializace ovladačů
Ovladač MCDM musí zadat funkci DriverEntry , která provádí následující kroky:
- Přidělení a inicializace struktury DRIVER_INITIALIZATION_DATA Podrobnosti najdete v požadavcích na podporu funkce ovladače .
- Zavolejte DxgkInitialize s inicializovanou strukturou.
Požadavky na podporu funkce ovladače
Ovladač MCDM zveřejňuje funkce, které implementuje ve struktuře DRIVER_INITIALIZATION_DATA .
Minimální požadovaná podpora
Ovladač MCDM musí minimálně zadat následující funkce rozhraní ovladače zařízení (DDI):
- DxgkDdiAddDevice
- DxgkDdiBuildPagingBuffer
- DxgkDdiCalibrateGpuClock
- DxgkDdiCloseAllocation
- DxgkDdiCollectDbgInfo
- DxgkDdiCreateAllocation
- DxgkDdiCreateContext
- DxgkDdiCreateDevice
- DxgkDdiDescribeAllocation
- DxgkDdiDestroyAllocation
- DxgkDdiDestroyContext
- DxgkDdiDestroyDevice
- DxgkDdiDpcRoutine
- DxgkDdiFormatHistoryBuffer
- DxgkDdiGetNodeMetadata
- DxgkDdiGetStandardAllocationDriverData
- DxgkDdiInterruptRoutine
- DxgkDdiOpenAllocation
- DxgkDdiPreemptCommand
- DxgkDdiQueryAdapterInfo (další informace viz požadavky DxgkDdiQueryAdapterInfo)
- DxgkDdiQueryDependentEngineGroup
- DxgkDdiQueryDeviceDescriptor
- DxgkDdiQueryEngineStatus
- DxgkDdiRemoveDevice
- DxgkDdiResetDevice
- DxgkDdiResetEngine
- DxgkDdiResetFromTimeout
- DxgkDdiRestartFromTimeout
- DxgkDdiSetPowerState
- DxgkDdiSetStablePowerState
- DxgkDdiSetVirtualMachineData
- DxgkDdiStartDevice
- DxgkDdiStopDevice
- DxgkDdiUnload
- DxgkDdiQueryChildStatus
- DxgkDdiQueryChildRelations
- DxgkDdiQueryConnectionChange
- DxgkDdiQueryDeviceDescriptor
Podpora apertury hostitele CPU
Pokud je podporováno využití hostitele procesoru, musí být k dispozici také ukazatele na následující funkce:
Další informace najdete v tématu Clona hostitele CPU.
Podpora fyzického adresování
Pokud se používá fyzické adresování, musí být k dispozici také ukazatele na následující funkce:
Podpora virtuálních adres GPU
Pokud se používá virtuální adresování GPU, musí být k dispozici také ukazatele na následující funkce:
- DxgkDdiCreateProcess
- DxgkDdiDestroyProcess
- DxgkDdiGetRootPageTableSize
- DxgkDdiSetRootPageTable
- DxgkDdiSubmitCommandVirtual
Podpora izolace IoMmu
Pokud je podporována izolace IoMmu, musí být k dispozici také ukazatele na následující funkce:
Podpora síťového adaptéru
Pro podporu volitelného adaptéru propojení musí být také uveden ukazatel na následující funkci:
Podpora řízení spotřeby
Pro volitelnou podporu řízení spotřeby musí být k dispozici také ukazatele na následující funkce:
- DxgkDdiSetPowerComponentFState; vyžaduje se, pokud hlášené součásti podporují stavy F..
- DxgkDdiPowerRuntimeControlRequest
- DxgkDdiPowerRuntimeSetDeviceHandle
Podpora řízení spotřeby je vyžadována v moderních pohotovostních nebo připojených pohotovostních systémech.
Další informace najdete v tématu Řízení spotřeby GPU nečinných stavů a aktivního výkonu.
Podpora odebrání překvapení
Pro volitelnou podporu náhlého odstranění musí být uvedeny také ukazatele na následující funkce:
Zrušení podpory
Pro volitelnou podporu zrušení je nutné zadat také ukazatele na následující funkce:
Podpora rozhraní
Pro volitelnou podporu rozhraní musí být k dispozici také ukazatele na následující funkce:
Podpora plánování hardwaru
Pro volitelnou podporu plánování hardwaru je třeba zadat také ukazatele na následující funkce:
- DxgkDdiCreateHwContext
- DxgkDdiCreateHwQueue
- DxgkDdiDestroyHwContext
- DxgkDdiDestroyHwQueue
- DxgkDdiPresentToHwQueue
- [DxgkDdiResetHwEngine
- DxgkDdiResumeContext
- DxgkDdiResumeHwEngine
- DxgkDdiSetContextSchedulingProperties
- DxgkDdiSetSchedulingLogBuffer
- DxgkDdiSetupPriorityBands
- DxgkDdiSignalMonitoredFence
- DxgkDdiSubmitCommandToHwQueue
- DxgkDdiSuspendContext
- DxgkDdiSwitchToHwContextList
- DxgkDdiUpdateHwContextState
Podpora updateAllocationProperty
Pro volitelnou podporu UpdateAllocationProperty je třeba zadat také ukazatele na následující funkce:
Podpora escape sekvencí
Pro volitelnou podporu escape sekvencí je nutné také poskytnout ukazatele na následující funkce:
Podpora trasování událostí pro Windows
Pro volitelnou podporu ETW musí být také poskytnuty ukazatele na následující funkce:
Podpora podřízených zařízení
Pro volitelnou podporu podřízených zařízení je potřeba zadat také ukazatele na následující funkce:
Podpora hlášení spotřeby energie
Pro volitelnou podporu hlášení spotřeby energie musí být uvedeny také ukazatele na následující funkce:
Ověření odeslání příkazu
V případě volitelného ověření odeslání příkazu je nutné zadat také ukazatele na následující funkce:
Podpora IOCTL
Pro volitelnou podporu IOCTL lze zadat ukazatel na následující funkci:
Zakázané funkce
V ovladači MCDM nesmí být k dispozici následující DDI:
- DxgkDdiAcquireSwizzlingRange
- DxgkDdiCheckMultiPlaneOverlaySupport
- DxgkDdiCheckMultiPlaneOverlaySupport2
- DxgkDdiCheckMultiPlaneOverlaySupport3
- DxgkDdiCommitVidPn
- DxgkDdiControlDiagnosticReporting
- DxgkDdiControlInterrupt
- DxgkDdiControlInterrupt2
- DxgkDdiControlModeBehavior
- DxgkDdiCreateOverlay
- DxgkDdiCreatePeriodicFrameNotification
- DxgkDdiCreateProtectedSession
- DxgkDdiDestroyOverlay
- DxgkDdiDestroyPeriodicFrameNotification
- DxgkDdiDestroyProtectedSession
- DxgkDdiDisplayDetectControl
- DxgkDdiEnumVidPnCofuncModality
- DxgkDdiExchangePreStartInfo
- DxgkDdiFlipOverlay
- DxgkDdiGetMultiPlaneOverlayCaps
- DxgkDdiGetPostCompositionCaps
- DxgkDdiGetScanLine
- DxgkDdiIsSupportedVidPn
- DxgkDdiNotifyAcpiEvent
- DxgkDdiNotifyFocusPresent
- DxgkDdiPostMultiPlaneOverlayPresent
- DxgkDdiPresent
- DxgkDdiQueryConnectionChange
- DxgkDdiQueryCurrentFence
Funkce WDDM 1.x
Následující funkce se používají pouze pro ovladače WDDM 1.x:
- DxgkDdiQueryDiagnosticTypesSupport
- DxgkDdiQueryVidPnHWCapability
- DxgkDdiRecommendFunctionalVidPn
- DxgkDdiRecommendMonitorModes
- DxgkDdiRecommendVidPnTopology
- DxgkDdiReleaseSwizzlingRange
- DxgkDdiRenderGdi
- DxgkDdiRenderKm
- DxgkDdiSetDisplayPrivateDriverFormat
- DxgkDdiSetPalette
- DxgkDdiSetPointerPosition
- DxgkDdiSetPointerShape
- DxgkDdiSetPowerPState (ovladač by neměl hlásit žádné komponenty napájení specifické pro P-state)
- DxgkDdiSetTargetAdjustedColorimetry
- DxgkDdiSetTargetAdjustedColorimetry2
- DxgkDdiSetTargetAnalogCopyProtection
- DxgkDdiSetTargetContentType
- DxgkDdiSetTargetGamma
- DxgkDdiSetTimingsFromVidPn
- DxgkDdiSetVideoProtectedRegion
- DxgkDdiSetVidPnSourceAddress
- DxgkDdiSetVidPnSourceAddressWithMultiPlaneOverlay
- DxgkDdiSetVidPnSourceAddressWithMultiPlaneOverlay2
- DxgkDdiSetVidPnSourceAddressWithMultiPlaneOverlay3
- DxgkDdiSetVidPnSourceVisibility
- DxgkDdiStopCapture
- DxgkDdiStopDeviceAndReleasePostDisplayOwnership
- DxgkDdiSubmitRender
- DxgkDdiSystemDisplayEnable
- DxgkDdiSystemDisplayWrite
- DxgkDdiUpdateActiveVidPnPresentPath
- DxgkDdiUpdateMonitorLinkInfo
- DxgkDdiUpdateOverlay
Požadavky na dotazování informací o adaptéru
Jak jsme uvedli dříve, ovladač jen pro výpočty musí podporovat DxgkDdiQueryAdapterInfo.
Musí být podporovány následující typy DXGK_QUERYADAPTERINFOTYPE :
- DXGKQAITYPE_DRIVERCAPS
- DXGKQAITYPE_NUMPOWERCOMPONENTS
- DXGKQAITYPE_HISTORYBUFFERPRECISION
- DXGKQAITYPE_QUERYSEGMENT4 (další informace najdete v tématu Použití segmentů paměti k popisu adresního prostoru GPU)
Podpora následujících typů DXGK_QUERYADAPTERINFOTYPE je volitelná:
- DXGK_ADAPTER_PERFDATA
- DXGK_ADAPTER_PERFDATACAPS
- DXGKQAITYPE_UMDRIVERPRIVATE
- DXGKQAITYPE_PHYSICALADAPTERCAPS
- DXGK_NODE_PERFDATA
- DXGK_GPUVERSION
Pokud byla hlášena jedna nebo více neplatných bloků paměti, musí být podporován následující DXGK_QUERYADAPTERINFOTYPE:
- DXGKQAITYPE_SEGMENTMEMORYSTATE
Pokud se podporuje GPUVA, musí být podporovány následující DXGK_QUERYADAPTERINFOTYPE:
- DXGKQAITYPE_GPUMMUCAPS
- DXGKQAITYPE_PAGETABLELEVELDESC
Pokud je počet hlášených komponent napájení větší než nula, musí být podporován následující DXGK_QUERYADAPTERINFOTYPE:
- DXGKQAITYPE_POWERCOMPONENTINFO
Pokud je nastavený limit IoMmuSecureModeSupported , musí být podporován následující DXGK_QUERYADAPTERINFOTYPE:
- DXGKQAITYPE_FRAMEBUFFERSAVESIZE
- DXGKQAITYPE_HARDWARERESERVEDRANGES
Následující DXGK_QUERYADAPTERINFOTYPE se nesmí podporovat:
- DXGKQAITYPE_DEVICE_TYPE_CAPS
- DXGKQAITYPE_DISPLAY_DRIVERCAPS_EXTENSION
- DXGKQAITYPE_DISPLAYID_DESCRIPTOR
- DXGKQAITYPE_INTEGRATED_DISPLAY_DESCRIPTOR
- DXGKQAITYPE_INTEGRATED_DISPLAY_DESCRIPTOR2
- DXGKQAITYPE_POWERCOMPONENTPSTATEINFO
- DXGKQAITYPE_PREFERREDGPUNODE
- DXGKQAITYPE_QUERYCOLORIMETRYOVERRIDES
- DXGKQAITYPE_QUERYSEGMENT
- DXGKQAITYPE_QUERYSEGMENT2
- DXGKQAITYPE_QUERYSEGMENT3
- DXGKQAITYPE_UEFIFRAMEBUFFERRANGES
Požadavky na možnosti řidiče
Následující členy struktury DXGK_DRIVERCAPS musí být nastaveny na odpovídající hodnoty:
| Člen | Poznámky |
|---|---|
| NejvyššíPřijatelnáAdresa | Pokud je tato adresa menší než nejvyšší fyzická adresa systémové paměti, která je přítomna během načítání ovladače, zatížení selže. |
| ČísloPřerušovacíZprávy | Nastavte podle potřeby. |
| SchedulingCaps | Viz požadavky SchedulingCaps. |
| MemoryManagementCaps | Viz požadavky MemoryManagementCaps. |
| GpuEngineTopology | Nastavte NbAsymetricProcessingNodes na počet podporovaných GPU motorů. |
| WDDMVersion | Musí být nastavená na DXGKDDI_WDDMv2_6 nebo novější. |
| PreemptionCaps | Nastavte graphicsPreemptionGranularity odpovídajícím způsobem na úroveň podporovanou hardwarem. Minimálně byste se měli pokusit podporovat předběžné zastavení na úrovni paketů pro přerušení zpracovávání paketů, které jsou naplánovány, ale ještě nebyly zahájeny. Nastavte ComputePreemptionGranularity na cokoli jiného než D3DKMDT_COMPUTE_PREEMPTION_NONE. |
| Podpora pro engine TDR | Musí být nastavena na hodnotu PRAVDA. Podívejte se na změny TDR ve Windows 8 a novějších verzích. |
| SupportRuntimePowerManagement | Nastavte podle potřeby. Viz řízení spotřeby GPU nečinných stavů a aktivního výkonu. |
| PodporaNečekanéhoOdstraněníVRežimuHibernace | Pokud ovladač podporuje odstranění překvapení při hibernaci, nastavte na hodnotu TRUE; v opačném případě je nastaveno podle potřeby. Viz DXGKDDI_NOTIFY_SURPRISE_REMOVAL. |
| HybridDiscrete | Musí být nastaveno na false. |
| HybridIntegrated | Musí být nastavená na HODNOTU FALSE. |
| InterníRozsahVirtuálníAdresyGrafickéhoProcesoruZačátek | Nastavte podle potřeby. Pokud se GpuVA nepodporuje, nastavte na nulu. Pokud se podporuje GpuVA, tato hodnota určuje začátek rozsahu VA, který operační systém použije při přidělování interních prostředků pro interní použití operačního systému. |
| KonecVnitřníhoRozsahuVirtuálníchAdresGpu | Nastavte podle potřeby. Pokud se GpuVA nepodporuje, nastavte na nulu. Pokud se podporuje GpuVA, tato hodnota určuje konec rozsahu VA, který bude operační systém používat při přidělování interních prostředků pro interní použití operačního systému. Pokud jsou počáteční i koncové hodnoty nulové, operační systém použije celý dostupný rozsah VA. |
| PodporaSurpriseRemoval | Nastavte podle potřeby. Pokud ovladač podporuje odstranění překvapení i mimo hibernaci, nastavte na hodnotu TRUE. Viz DXGKDDI_NOTIFY_SURPRISE_REMOVAL. |
| ComputeOnly | Musí být nastavena na hodnotu PRAVDA. Tento příznak musí být implementován. |
Následující členy struktury DXGK_DRIVERCAPS musí být nastaveny na nulu nebo NEPRAVDA, a to odpovídajícím způsobem:
- MaxAllocationListSlotId
- ApertureSegmentCommitLimit
- MaximálníŠířkaUkazovatele
- Maximální výška ukazatele
- PointerCaps
- PočetSwizzlingRanges
- MaxOverlays
- GammaRampCaps
- ColorTransformCaps (možnosti transformace barev)
- PresentationCaps
- MaxQueuedFlipOnVSync
- FlipCaps
- SupportNonVGA
- Podpora hladkého otáčení
- SupportDirectFlip
- Podpora vícevrstvého překrytí
- MaxOverlayPlanes
- SupportMultiPlaneOverlayImmediateFlip
- CursorScaledWithMultiPlaneOverlayPlane0
- HybridAcpiChainingRequired
- MaxQueuedMultiPlaneOverlayFlipVSync
- SupportContextlessPresent
- Odpojitelný
Požadavky na plánovací limity (SchedulingCaps)
Následující DXGK_DRIVERCAPS. Členy struktury SchedulingCaps musí být nastaveny na odpovídající hodnoty:
| Člen | Poznámky |
|---|---|
| MultiEngineAware | Musí být nastavena na hodnotu PRAVDA. Viz GPU Preemption. |
| VSyncPowerSaveAware | Musí být nastavená na HODNOTU FALSE. |
| PreemptionAware | Musí být nastavena na hodnotu PRAVDA. Viz GPU Preemption. |
| NoDmaPatching | Musí být nastavená na HODNOTU FALSE. |
| CancelCommandAware | Nastavte podle potřeby. Podívejte se na DXGKDDI_CANCELCOMMAND. |
| No64BitAtomics | Nastavte podle potřeby. Viz Monitorování kontextu. |
| LowIrqlPreemptCommand | Nastavte na hodnotu TRUE. Operační systém zavolá na ovladač DxgkDdiPreemptCommand při nízké úrovni IRQL. |
| HwQueuePacketCap | Rezervovaný; nastaveno na nulu. |
Požadavky na správu paměti
Následující DXGK_DRIVERCAPS. Členy struktury MemoryManagementCaps musí být nastaveny na odpovídající hodnoty:
| Člen | Poznámky |
|---|---|
| OutOfOrderLock | Musí být nastaveno na false. |
| DedicatedPagingEngine | Musí být nastavená na HODNOTU FALSE. |
| PagingEngineCanSwizzle | Musí být nastavená na HODNOTU FALSE. |
| SekcíPodloženýPrimární | Musí být nastavená na HODNOTU FALSE. |
| CrossAdapterResource | Nastavte podle potřeby. Viz Použití prostředků křížového adaptéru v hybridním systému. |
| Virtuální podpora adresování | Nastavte podle potřeby. Viz virtuální paměť GPU v WDDM 2.0. Pokud je tento člen nastaven, ovladač musí také nastavit GpuMmuSupported a/nebo IoMmuSupported. |
| GpuMmuSupported | Nastavte podle potřeby. Viz GpuMmu Model. |
| IoMmuSupported | Nastavte podle potřeby. Tento limit se nastaví, když zařízení sdílí stránkovací tabulky s procesorem (sdílenou virtuální pamětí (SVM)). Viz také IoMmu Model. |
| ReplikovatGdiContent | Musí být nastavená na HODNOTU FALSE. |
| Nepřístupný pro CPU primární | Musí být nastavená na HODNOTU FALSE. |
| Paravirtualizace podporována | Ovladače hostitele MCDM, které podporují virtualizaci zařízení prostřednictvím rozhraní dělení GPU (GPU-P s SR-IOV), by toto pole mělo nastavit na FALSE. Všechny ostatní případy (ovladače pro fyzické počítače bez podpory GPU-P nebo hostitelské ovladače vGPU, které jsou vystaveny prostřednictvím GPU-P) by měly toto pole nastavit na hodnotu TRUE. |
| IoMmuSecureModeSupported | Nastavte podle potřeby. Pokud je tento limit nastavený na hodnotu TRUE, ovladač podporuje izolaci IoMmu (zařízení má vyhrazenou stránkovací tabulku pro jednotku IoMmu). Pokud je tento limit nastavený na HODNOTU FALSE, zařízení se nedá použít na "zabezpečených" virtuálních počítačích (Windows Sandbox nebo MDAG). |
| DisableSelfRefreshVRAMInS3 | Nastavte podle potřeby. |
Správa paměti
Vyžaduje se virtuální adresování. Podpora fyzického adresování může být v budoucnu povolená.
Zařízení nemusí podporovat paměťovou clonu.
Podporují se pouze lineární segmenty prostoru paměti a lineární segmenty prostorového prostoru .