Das Wine-Projekt hat Vkd3d 1.13 mit der Implementierung von Direct3D 12 veröffentlicht

Das Wine-Projekt hat die Veröffentlichung des Pakets vkd3d 1.13 mit der Implementierung von Direct3D 12 bekannt gegeben, die über die Übersetzung von Aufrufen in die Vulkan-Grafik-API funktioniert. Das Paket enthält die Bibliotheken libvkd3d mit der Implementierung von Direct3D 12, libvkd3d-shader mit dem Übersetzer für Shader-Modell 4 und 5 sowie libvkd3d-utils mit Funktionen zur Vereinfachung der Portierung von Direct3D 12-Anwendungen, einschließlich einer Auswahl von Demo-Beispielen, darunter der Port von glxgears auf Direct3D 12. Der Code des Projekts wird unter der LGPLv2.1-Lizenz veröffentlicht.

Die Bibliothek libvkd3d unterstützt die meisten Funktionen von Direct3D 12, einschließlich Grafik- und Rechenressourcen, Warteschlangen und Befehlslisten, Deskriptoren und Speicher-Deskriptoren, Root-Signaturen, ungeordneter Zugriff, Sampler, Befehls-Signaturen, Root-Konstanten, indirekte Renderings, Clear*()-Methoden und Copy*(). In libvkd3d-shader ist die Übersetzung von Bytecode der Shader-Modelle in das Intermediate Representation SPIR-V implementiert. Unterstützt werden Vertex-, Pixel-, Tessellation-, Compute- und einfache geometrische Shader, sowie die Serialisierung und Deserialisierung von Root-Signaturen. Unter den Shader-Anweisungen sind arithmetische, atomare und bitweise Operationen, Vergleichsoperatoren und Anweisungen zur Steuerung des Datenflusses, die Anweisungen sample, gather und load, sowie Operationen für ungeordneten Zugriff (UAV, Unordered Access View) implementiert.

In der neuen Version:

  • Der HLSL-Compiler hat Unterstützung für das Entfalten von Schleifen (Loop Unrolling) hinzugefügt, eine Optimierung, bei der zur effizienteren Nutzung des Prozessor-Caches und zur Reduzierung von Verzweigungen zyklische Operationen durch mehrere aufeinanderfolgende Kopien des Codes ersetzt werden.
  • Unterstützung für den Effekte-Compiler wurde für bestimmte State-Objekte des vierten Shader-Modells hinzugefügt.
  • Unterstützung für die Typen des vierten Shader-Modells BlendState, ComputeShader, DomainShader, GeometryShader, HullShader, DepthStencilState und RasterizerState sowie für die Funktionen OMSetRenderTargets(), SetBlendState(), SetComputeShader(), SetDomainShader(), SetGeometryShader(), SetHullShader(), SetPixelShader(), SetVertexShader(), SetDepthStencilState() und SetRasterizerState() wurde bereitgestellt.
  • Im Shader-Compiler wurde die Unterstützung für das Parsen und Speichern von Initialisierungswerten in verschiedenen Formaten für globale Variablen, Funktionsparameter und Annotationen implementiert.
  • Unterstützung für das Registerbereich des Shader-Modells 5.1 wurde hinzugefügt.
  • Es wurden eingebaute Funktionen wie tex1D(), tex2D(), tex3D(), texCUBE(), asint(), f16tof32(), faceforward(), GetRenderTargetSampleCount(), rcp(), tex2Dbias(), tex1Dgrad(), tex2Dgrad(), tex3Dgrad() und texCUBEgrad() implementiert.
  • In libvkd3d wurde die Schnittstelle ID3D12CommandList6 hinzugefügt und die Möglichkeit implementiert, Texturen zu erstellen, deren Kompression auf Ebene einzelner Blöcke erfolgt (zum Beispiel werden Blöcke mit einer Größe von 4×4 Pixel separat komprimiert).
  • Die Unterstützung der Struktur vkd3d_shader_parameter_info und der Parameter VKD3D_SHADER_PARAMETER_DATA_TYPE_FLOAT32, VKD3D_SHADER_PARAMETER_NAME_ALPHA_TEST_FUNC, VKD3D_SHADER_PARAMETER_NAME_ALPHA_TEST_REF, VKD3D_SHADER_PARAMETER_NAME_FLAT_INTERPOLATION und VKD3D_SHADER_PARAMETER_TYPE_BUFFER wurde hinzugefügt.

Quelle: opennet.ru

60GB SSD 8Gb DDR4