Wine layihəsi vkd3d 1.17 paketinin buraxılışını elan etdi, burada Direct3D 12, Vulkan qrafik API-sinə çağırışların tərcüməsi vasitəsilə işləyir. Paketin tərkibində Direct3D 12-nin icrası üçün libvkd3d kitabxanası, 4 və 5 model shaderləri üçün tərcüməçi olan libvkd3d-shader və Direct3D 12 tətbiqlərinin daşınmasını asanlaşdıran funksiyalarla dolu libvkd3d-utils var. Həmçinin, Direct3D 12-yə port edilmiş glxgears daxil olmaqla bir çox nümunə də var. Layihənin kodu LGPLv2.1 lisenziyası altında yayımlanır.
libvkd3d kitabxanası Direct3D 12-nin çox hissəsini, qrafika və hesablama vasitələrini, sıraları və komanda siyahılarını, deskriptorlar və saxlama deskriptorlarını, kök imzaları, qeyri-müəyyən giriş imkanı, nümunəçilər, komanda imzaları, kök konstantları, qeyri-düzgün (indirect) renderləmə, Clear*() və Copy*() metodlarını dəstəkləyir. libvkd3d-shader-da shader modellərinin byte kodunun SPIR-V arası təqdimata çevrilməsi həyata keçirilmişdir. Piksel, vertex, tessellation, hesablama və sadə geometriya shaderləri, kök imzasının serializasiyası və deserializasiyası dəstəklənir. Shader təlimatlarından riyazi, atomar və bit əməliyyatları, müqayisə və axın idarəetmə əmrləri, sample, gather və load təlimatları, qeyri-müəyyən giriş imkanı (UAV, Unordered Access View) əməliyyatları həyata keçirilmişdir.
Yeni versiyada:
- HLSL shader dilinin icrasına axın qruplarının paylaşdığı yaddaş üçün ilkin dəstək əlavə edilib, geometriya shaderlərinin dəstəyi genişləndirilib, StructuredBuffer resursları üçün bir parse əlavə edilib.
- Apple tərəfindən Metal qrafik API-sində istifadə olunan MSL (Metal Shading Language) shader dilinin icrası üzərində işləməyə davam edilir. Məsələn, MSL-də dövrlər, sabit yastıqların dolayısından adresləmə, tekstur nümunələmə və müxtəlif tam ədədi aritmetik və müqayisə əməliyyatları dəstəklənir.
- libvkd3d kitabxanasında ID3D12Device5 proqram interfeysinin icrasına EnumerateMetaCommands() metodu əlavə edilib.
- Yeni ‘tx’ (VKD3D_SHADER_SOURCE_TX) tipində shaderlər əlavə edilib ki, bu da tekstur işləmə shaderlərini yükləmək üçün istifadə olunur.
Mənbə: opennet.ru
