DirectX 12: Unterschiede zwischen Feature-Levels und Tiers

Tut mir leid, jetzt blick ich gar nicht mehr durch. Was hat das alles mit dem Tier auf sich, und was sind die Unterschiede von FL11_1, FL12_0 und FL12_1 ??? Eine vernünftige Erklärung wäre mal notwendig.
Tier = Stufe/Level

Es gibt sehr viele Features unter DX12 und manche wurden eben in ihren Fähigkeiten unterteilt.

- Resource Binding wird in drei Stufen unterteilt, dabei ist spezifiziert wie viele Ressourcen gleichzeitig verwendet werden können (Texturen, Buffer, Daten).
Mit Tier 1 entsprechend wenig, mit Tier 2 schon deutlich mehr und die Experten sprechen hier von bindless resources und Tier 3 hat theoretisch keine feste Limitierung mehr, was die verwende Anzahl angeht.

Resource Binding ist aber nicht das einzige Feature welches unterschiedliche Tiers hat.

Es gibt auch

- Tiled Resources Tier 1, 2, 3
- Conservative Rasterization Tier 1, 2, 3
- Resource Heap Tier 1,2

Einige Features haben gar keine Tiers/Stufen, dann heißt es einfach unterstützt oder unterstützt nicht.

Damit das ganze nicht in einem Chaos abdriftet, wo jeder Entwickler jedes einzelne Feature abfragen muss und entsprechende Fallbacks schreiben, gibt es Feature-Levels.
Feature-Levels sind praktisch selbsterklärend, sie fassen eine Anzahl an gewissen Features zusammen und stellen eine gemeinsame Basis dar.

Zwischen FL11_0, FL11_1 und FL12_0, FL12_1 steigen jedes mal gewisse Anforderungen.
Der Unterschied zwischen FL11_0 und FL11_1 beschränkt sich wenn ich das richtig sehe primär auf die Unordered access views, wie viele man davon haben kann (64 vs. 8) und bei welchen Shader-Typen.
Ansonsten wenn ich den alten Meldungen diesbezüglich glauben darf, ein bisschen 2D Zeug, was für Spiele jetzt nicht interessiert.

Schaut man sich FL12_0 an, dann sprechen wir hier vs. FL11_0/1 von bindless resources, tiled resources tier 2 und typed uav load.
Was letztendlich dazu führt, dass man mehr Ressourcen gleichzeitig haben kann und mehr Spielraum bei Texturen hat.
Tiled resources behandelt das Konzept, dass man eine Textur in Kacheln unterteilen kann und nur das gezeigt wird, was der Spieler gerade sieht.
Man muss so nicht die ganze Textur im VRAM haben und kann eine Textur entsprechend viel größer gestalten.

Bei FL12_1 kommt Conservative Rasterization und Raster Ordered Views dazu.
1. erhöht die Genauigkeit der Raster-Informationen.
Mit CR kann man effektiv Algorithmen verwenden, wo es früher Grafik-Bugs gegeben hätte.

ROVs ermöglichen einen viel effizienteren Einsatz von OIT bzw. Transparenz.
Kann alles möglich sein, Haare, Rauch, Gräser, man könnte es auch für Anti-Alisiang verwenden.
 
Ich wage mal einen Erklärungsversuch:

DirectX ist erst einmal nur eine Softwareschnittstelle zwischen Grafiktreiber und Programm. Eine GPU ist also prinzipiell DirectX XY.Z fähig, wenn ein passender GPU-Treiber für diese DirectX Version existiert, oder anders ausgedrückt wenn es der GPU-Treiber erlaubt die GPU über diese Softwareschnittstelle anzusprechen. Dabei muss der Treiber erst einmal nur sehr wenige Funktionen bereitstellen, unter anderem eine zum Überprüfen ob ein bestimmtes Feature dieser DX Schnittstelle unterstützt wird.

In der guten alten DirectX 9 Zeit mussten Entwickler also jedes nicht banale Feature im Code auf Kompatibilität überprüfen, bevor sie sicher sein konnten dass die GPU das auch unterstützt. Mit diesem Schema kann also theoretisch auch eine DirectX 9 GPU als DirectX 12 vermarktet werden - der Entwickler wird dann aber feststellen dass die meisten neueren Feaures nicht unterstützt werden.

Um dem Kunden und auch den Entwicklern etwas mehr Übersicht zu verschaffen, wurden die Featurelevels eingeführt. Diese geben an welches DirectX die GPU VOLL unterstützt, also alle in dieser DirectX Version vorhandenen Funktionen. Eine DirectX 12 GPU mit Featurelevel 11.0 kann also zwar über den Treiber mit DirectX 12 angesprochen werden, allerdings wird nur garantiert, dass alle Funktionen bis DirectX 11.0 auch anständig funktionieren.

Die Binding-Tiers sind davon vollkommen unabhängig und für den Entwickler uninteressant, denn das "Binden" geschieht hinter den Kulissen - man sagt dem Treiber er soll z.B. eine Textur binden, aber wie der Treiber das macht ist dem Entwickler erst mal egal, solange es ausreichend schnell geht.
 
Mit diesem Schema kann also theoretisch auch eine DirectX 9 GPU als DirectX 12 vermarktet werden - der Entwickler wird dann aber feststellen dass die meisten neueren Feaures nicht unterstützt werden.
Auch bei DX9 muss es es Grundlevel gegeben haben, um DX9 Support behaupten zu können.

Eine DirectX 12 GPU mit Featurelevel 11.0 kann also zwar über den Treiber mit DirectX 12 angesprochen werden, allerdings wird nur garantiert, dass alle Funktionen bis DirectX 11.0 auch anständig funktionieren.
Alle Funktionen der Runtime und dem entsprechendem Level.
DX12 bietet auch unter FL11_x mehr Funktionen an, als DX11.(x) mit FL11.x.
 
Zuletzt bearbeitet:
Im Umkehrschluss heißt das aber auch das DX11 oder Spiele die nur ältere Versionen unterstutzen auf DX12 nur mäßig bis gar nicht laufen?

Ich versuche mich nochmal klarer auszudrücken:

DX11 und DX12 sind zwei vollkommen unterschiedliche Schnittstellen. Eine DX11-Software kann und wird niemals automatisch DX12, oder dessen Vorteile, nutzten. Für die alte Software bringt Windows 10 weiterhin spezielle DX11-DLLs und Treiber mit.
 
Im Endeffekt ist mir diese ganze Technik Zeugs drum herum egal, hauptsache es bringt wirklich was, zur Zeit eher nur etwas warum man auf Windows 10 umsteigen sollte.....
 
Laufen denn Dx 11 Games , crysis3 etc.. unter dx12 ( Win 10 ) besser oder mit mehr FPS? Wird die Hardware dann besser ausgelastet?

Gruß stolle
 
Also für mich klingts wie nen Mantle nachfolger für win10 :D
 
Zuletzt bearbeitet:
Kann mir einer zeigen wo Nvidia offiziel bestätigt hat das meine 970 12.1 kann?
Ich seh nämlich immer nur 100 verschiedene Seiten die ich noch nie im Leben gesehen habe.
 
Ist das wichtig, weil es ist die Wahrheit und ich bin gerade faul was die Beweisführung angeht oder auch google.
 
Ich glaube sonderlich groß werden die Unterschiede zwischen den Feature Levels in der Praxis nicht ausfallen. Am Ende wird für einen gemeinsamen Nenner entwickelt, sprich Feature_Level 12_0, eventuell mit ein paar Ausnahmen. Nvidia wird vermutlich irgendwelche 12_1 exklusiven Features in GameWorks einbauen und vielleicht schafft es auch etwas Resource Binding Tier 3 Code von den Konsolen auf den PC. Ein Fallback auf durch FL 12_0 garantierte Funktionen wird es aber in jedem Fall geben.
 
Oh...meine 7970 kann DX12? Also wirklich verstehen tu ich die Erklärung nicht, dafür steck ich nicht mehr tief genug drin in der Technik. Aber dass mein altes Gerät noch immer nicht ganz abgeschrieben ist...nicht übel!
 
DX12 ist PR mässig ein Desaster mit Tier, Featurelevel usw. Glaubt ihr so etwas könne man auf die Verpackung schreiben, so dass es ein Laie kapiert? Nicht mal ich blicke wirklich durch.
 
Eigentlich ist das total unwichtig. Mal ganz davon abgesehen das es der Laie nicht begreift was in dieser Tabelle steht .. ich selbst übrigens auch nicht.. ist es noch garnicht wichtig welche karte nun welches DX12 kann.. man muss erstmal die passenden Spiele auf dem Markt haben. Ich denke das die ersten Spiele mit voller DX 12 Unterstützung erst ende diessen jahres oder gar mitte 2016 kommen werden.

Was ich auch nicht verstehe ist warum die AMD Karten Tier 3 haben und die Nvidia Karten tier2. Aber gut, ist sowieso egal.
 
Zurück