Porten of interpreteren?
Nu het duidelijk is dat Direct3D 10 in zijn huidige vorm niet geschikt is voor andere besturingssystemen dan Vista, is het tijd om naar mogelijke oplossingen te kijken. Direct3D 10 is immers 'slechts' software die ontworpen is om bepaalde hardware aan te sturen. Het moet dus in theorie mogelijk zijn om een implementatie voor andere besturingssystemen te schrijven. De vraag is uiteraard wie die taak op zich zal nemen.
Het porten van Direct3D 10 naar Windows 2000 en XP
Omdat Microsoft zowel Windows 2000 en XP als Vista heeft ontwikkeld, zijn veel mensen van mening dat het voor het bedrijf uit Redmond triviaal moet zijn om Direct3D 10 te porten naar XP. Vroegere versies van DirectX zijn ook in een later stadium wel beschikbaar gesteld voor oudere besturingssystemen. Voor DirectX 9 en ouder was dit ook relatief eenvoudig: het onderliggende drivermodel bleef steeds gelijk. We hebben inmiddels gezien dat dit niet opgaat voor het drivermodel van versie 10. Een simpele update voor XP behoort dan ook niet tot de mogelijkheden. Microsoft zou een patch uit moeten brengen die een groot gedeelte van de kernel aanpast. Naast een zeer grote hoeveelheid werk voor de programmeurs van Microsoft brengt dit nogal wat risico's met zich mee. Het updaten van de kernel van een vijf jaar oud besturingssysteem zou grote gevolgen voor bestaande applicaties kunnen hebben, iets waar gebruikers van XP natuurlijk niet op zitten te wachten. Hoewel het geschikt maken van Direct3D 10 voor XP technisch gezien mogelijk is, is het dus zeer kostbaar en risicovol.
Direct3D 10 commando's toevoegen aan Windows 2000/XP
Het volledig porten van Direct3D 10 naar Windows 2000 of XP blijkt dus niet zo eenvoudig te zijn. Is het dan niet mogelijk D3D 10-commando's toe te voegen aan XP zonder de kernel te updaten? Het pre-'versie 10'-model maakte het mogelijk dat verschillende Direct3D-versies met eenzelfde driver konden werken: een driver die geschikt is voor versie 9 kan ook overweg met commando's van oudere versies. Zou er geen gebruik gemaakt kunnen worden van deze flexibiliteit om zo een aparte Direct3D-versie voor Windows XP uit te brengen?

Technisch gezien zijn er mogelijkheden, maar deze optie vergt forse aanpassingen van verschillende partijen. Microsoft moet de huidige Direct3D-runtime updaten en fabrikanten van grafische kaarten moeten al hun huidige XP-drivers bijwerken. Gezien het oude drivermodel van Windows XP zal 'XP D3D 10' net iets anders werken dan de Vista-versie. Het schrijven van een driver voor deze versie zal ook aanzienlijk complexer zijn omdat verschillende onderdelen - zoals de virtual video memory manager - niet beschikbaar zijn in XP. Deze functionaliteit zal dus in de driver zelf opgenomen moeten worden. De extra overhead die dit met zich meebrengt zal de performance van Direct3D 10 onder XP niet ten goede komen.
OpenGL gebruiken
Alle NT-versies van Windows bieden standaard ondersteuning voor OpenGL. De clientdrivers draaiden altijd al in usermode, net als de D3D 10-drivers in Vista. De communicatie tussen usermode en kernelmode is niet gebaseerd op een protocol van Microsoft, dus het moet mogelijk zijn om een OpenGL-driver extra functionaliteit te laten ondersteunen. Met andere woorden: een OpenGL-driver kan Direct3D 10-specifieke functionaliteit van een grafische kaart onder XP ondersteunen. De Direct3D 10-runtime zou zonder grote aanpassingen in staat moeten zijn om met een XP-usermodedriver te communiceren. De driver zou functioneel gelijk zijn aan de Vista-variant maar de communicatie met de kernelmodedrivers zou via OpenGL-kanalen verlopen, in plaats van langs de nieuwe Vista-route. Helaas heeft deze oplossing hetzelfde grote nadeel als de vorige: de fabrikanten zullen alle functionaliteit van het Vista-graphics kernel subsystem in hun eigen drivers moeten implementeren.

Fabrikanten brengen hun eigen implementatie uit
Iedere oplossing die we tot nu toe bekeken hebben zal extra werk van Microsoft vragen. Hoewel dat niet onmogelijk is, lijkt de kans dat dat gaat gebeuren niet erg groot. Wie zou er nog meer in staat zijn om D3D 10 naar XP te brengen? De fabrikanten van gpu's hebben reeds de beschikking over de code van de drivers. Ze hebben echter geen toegang tot de broncode van de kernel- en de usermoderuntime. Het usermode-gedeelte zouden ze, zoals gezegd, in de driver kunnen implementeren, maar de kernelzijde moet ook geschikt gemaakt worden. De fabrikanten kunnen ervoor kiezen om rechtstreeks de betreffende dll-bestanden te patchen. Dat is echter zowel technisch als juridisch geen eenvoudige optie. Ook omdat dit enorm veel tijd zal kosten - en er gedurende de ontwikkeling waarschijnlijk steeds meer Vista-systemen zullen komen - zullen de fabrikanten terughoudend zijn met investeringen in een eigen Direct3D-implementatie voor Windows XP.

Omdat Microsoft zowel Windows 2000 en XP als Vista heeft ontwikkeld, zijn veel mensen van mening dat het voor het bedrijf uit Redmond triviaal moet zijn om Direct3D 10 te porten naar XP. Vroegere versies van DirectX zijn ook in een later stadium wel beschikbaar gesteld voor oudere besturingssystemen. Voor DirectX 9 en ouder was dit ook relatief eenvoudig: het onderliggende drivermodel bleef steeds gelijk. We hebben inmiddels gezien dat dit niet opgaat voor het drivermodel van versie 10. Een simpele update voor XP behoort dan ook niet tot de mogelijkheden. Microsoft zou een patch uit moeten brengen die een groot gedeelte van de kernel aanpast. Naast een zeer grote hoeveelheid werk voor de programmeurs van Microsoft brengt dit nogal wat risico's met zich mee. Het updaten van de kernel van een vijf jaar oud besturingssysteem zou grote gevolgen voor bestaande applicaties kunnen hebben, iets waar gebruikers van XP natuurlijk niet op zitten te wachten. Hoewel het geschikt maken van Direct3D 10 voor XP technisch gezien mogelijk is, is het dus zeer kostbaar en risicovol.
Het volledig porten van Direct3D 10 naar Windows 2000 of XP blijkt dus niet zo eenvoudig te zijn. Is het dan niet mogelijk D3D 10-commando's toe te voegen aan XP zonder de kernel te updaten? Het pre-'versie 10'-model maakte het mogelijk dat verschillende Direct3D-versies met eenzelfde driver konden werken: een driver die geschikt is voor versie 9 kan ook overweg met commando's van oudere versies. Zou er geen gebruik gemaakt kunnen worden van deze flexibiliteit om zo een aparte Direct3D-versie voor Windows XP uit te brengen?

Windows XP met Direct3D 10 uitbreiding (klik voor grotere versie)
Alle NT-versies van Windows bieden standaard ondersteuning voor OpenGL. De clientdrivers draaiden altijd al in usermode, net als de D3D 10-drivers in Vista. De communicatie tussen usermode en kernelmode is niet gebaseerd op een protocol van Microsoft, dus het moet mogelijk zijn om een OpenGL-driver extra functionaliteit te laten ondersteunen. Met andere woorden: een OpenGL-driver kan Direct3D 10-specifieke functionaliteit van een grafische kaart onder XP ondersteunen. De Direct3D 10-runtime zou zonder grote aanpassingen in staat moeten zijn om met een XP-usermodedriver te communiceren. De driver zou functioneel gelijk zijn aan de Vista-variant maar de communicatie met de kernelmodedrivers zou via OpenGL-kanalen verlopen, in plaats van langs de nieuwe Vista-route. Helaas heeft deze oplossing hetzelfde grote nadeel als de vorige: de fabrikanten zullen alle functionaliteit van het Vista-graphics kernel subsystem in hun eigen drivers moeten implementeren.

Iedere oplossing die we tot nu toe bekeken hebben zal extra werk van Microsoft vragen. Hoewel dat niet onmogelijk is, lijkt de kans dat dat gaat gebeuren niet erg groot. Wie zou er nog meer in staat zijn om D3D 10 naar XP te brengen? De fabrikanten van gpu's hebben reeds de beschikking over de code van de drivers. Ze hebben echter geen toegang tot de broncode van de kernel- en de usermoderuntime. Het usermode-gedeelte zouden ze, zoals gezegd, in de driver kunnen implementeren, maar de kernelzijde moet ook geschikt gemaakt worden. De fabrikanten kunnen ervoor kiezen om rechtstreeks de betreffende dll-bestanden te patchen. Dat is echter zowel technisch als juridisch geen eenvoudige optie. Ook omdat dit enorm veel tijd zal kosten - en er gedurende de ontwikkeling waarschijnlijk steeds meer Vista-systemen zullen komen - zullen de fabrikanten terughoudend zijn met investeringen in een eigen Direct3D-implementatie voor Windows XP.

Windows XP met Direct3D 10 via leverancier hardware(klik voor groter)
Volgende pagina (De toekomst - 4/4)