Locuza
Lötkolbengott/-göttin
AW: AMD Radeon RX Vega: Unmut über fehlende Primitive Shader und mehr häuft sich
Was steckt denn sonst hinter meinen Ausführungen? Inhaltsloses Stammtisch Geplärre?
Das sind zwei unterschiedliche APIs, keines davon ist ein direktes Sub- oder Superset vom anderem.
Es gibt eine Schnittmenge, die unter beiden APIs zu finden ist, aber keine API ist gänzlich in der anderen vorhanden.
DX12 arbeitet mit einem anderem und expliziten Resource-Model, Command-Lists und anderen APIs, welche z.B. für das neue Resource-Binding-Model zuständig sind, bei einer DX12-Umsetzung fällt entsprechend auch nicht automatisch irgendeine DX11.x-Version vom Spiel ab.
Das beste was im Angebot existiert ist ein D3D11 on 12 Layer, wo ein D3D11 Context mehrheitlich unter D3D12 abgebildet werden kann:
Direct3D 11 on 12 (Windows)
Das läuft aber natürlich auch nicht automatisch, man muss explizit das Interface dafür verwenden, die verwendeten Ressourcen müssen mit einer weiteren API noch verpackt werden, damit sie von Command-Lists verwendet werden können und es existieren mehrere Limitierungen.
Der Ursprungskontext war, dass jedes Spiel mit einer DX12-Portierung auch DX11.3 unterstützt, was einfach nicht stimmt.
Es ist natürlich nicht schwer, die Rendering-Features welche unter beiden APIs zu finden sind, auch für beide APIs umzusetzen.
Die Syntax für die Aufzählungstypen ist fast identisch, aber nicht völlig gleich, auch werden die APIs teilweise unterschiedlich von anderen aufgerufen (API Summary durchklicken):
Conservative Rasterization (Windows)
Conservative Rasterization (Windows)
Wenn du ein D3D11.0 Backend besitzt und zusätzlich ein D3D12 Backend mit Conservative Rasterization baust, dann wird dein D3D11.0 Backend nicht automatisch das Renderingfeature miteinfplegen und bei Support entsprechend D3D11.3 initialisieren, dass muss jemand manuell machen.
Übrigens habe ich nirgendwo Zweifel an der Sinnhaftigkeit genannt, nur das offenkundige Problem dargestellt, dass die Versionsupdates für DX11 von Windowsversionen abhängig sind und damit der Anreiz für die Unterstützung gering ausfällt.
???[...]
Locuza versucht jedenfalls die Diskussion am Leben zu erhalten, wenn ich mir auch nicht ganz sicher bin aus welchen Grund, da kann reine Informationsgewinnung dahinter stecken (was man niemandem übel nimmt).
Was steckt denn sonst hinter meinen Ausführungen? Inhaltsloses Stammtisch Geplärre?
DX11.3 ist kein einfacheres Subset von DX12.DX11.3 ist ein einfacheres D3D12 Subset, bestehend aus Ordered rasterizer View, Typed UAV Load, Volume Tiled Resources, Conservative grid und tatsächlich hat er Recht, wenn er bezweifelt das dieses wirklich Sinn macht. Ein Spiel das zu DX12 portiert werden kann, kann ganz sicher zu DX11.3 portiert werden, auch wenn das Subset in seiner Gesamtheit nicht verbindlich ist. Entgegen seiner "Meinung" behaupte ich, das Rendering ist kein grundlegend anderes...denn das devrel control set und die Feinheiten liegen im Detail (volume tiles, textures and sparse allocation, detection of polygons usw.) und gehen fließend in DX12 über.
Das sind zwei unterschiedliche APIs, keines davon ist ein direktes Sub- oder Superset vom anderem.
Es gibt eine Schnittmenge, die unter beiden APIs zu finden ist, aber keine API ist gänzlich in der anderen vorhanden.
DX12 arbeitet mit einem anderem und expliziten Resource-Model, Command-Lists und anderen APIs, welche z.B. für das neue Resource-Binding-Model zuständig sind, bei einer DX12-Umsetzung fällt entsprechend auch nicht automatisch irgendeine DX11.x-Version vom Spiel ab.
Das beste was im Angebot existiert ist ein D3D11 on 12 Layer, wo ein D3D11 Context mehrheitlich unter D3D12 abgebildet werden kann:
Direct3D 11 on 12 (Windows)
Das läuft aber natürlich auch nicht automatisch, man muss explizit das Interface dafür verwenden, die verwendeten Ressourcen müssen mit einer weiteren API noch verpackt werden, damit sie von Command-Lists verwendet werden können und es existieren mehrere Limitierungen.
Der Ursprungskontext war, dass jedes Spiel mit einer DX12-Portierung auch DX11.3 unterstützt, was einfach nicht stimmt.
Es ist natürlich nicht schwer, die Rendering-Features welche unter beiden APIs zu finden sind, auch für beide APIs umzusetzen.
Die Syntax für die Aufzählungstypen ist fast identisch, aber nicht völlig gleich, auch werden die APIs teilweise unterschiedlich von anderen aufgerufen (API Summary durchklicken):
Conservative Rasterization (Windows)
Conservative Rasterization (Windows)
Wenn du ein D3D11.0 Backend besitzt und zusätzlich ein D3D12 Backend mit Conservative Rasterization baust, dann wird dein D3D11.0 Backend nicht automatisch das Renderingfeature miteinfplegen und bei Support entsprechend D3D11.3 initialisieren, dass muss jemand manuell machen.
Übrigens habe ich nirgendwo Zweifel an der Sinnhaftigkeit genannt, nur das offenkundige Problem dargestellt, dass die Versionsupdates für DX11 von Windowsversionen abhängig sind und damit der Anreiz für die Unterstützung gering ausfällt.