Wine layihəsi vkd3d 1.13 pəckini təqdim etdi, bu pəck Direct3D 12-nin Vulkan qrafik API-sinə çağırışların çevrilməsi vasitəsi ilə işləyən həyata keçirilməsini ehtiva edir. Pəckin tərkibində Direct3D 12-nin həyata keçirilməsi ilə libvkd3d kitabxanaları, 4 və 5-ci nəsil şaderlərin çevrilməsi üçün libvkd3d-shader və Direct3D 12 tətbiqlərinin köçürülməsini asanlaşdıran funksiyaları olan libvkd3d-utils kitabxanaları, eləcə də Direct3D 12-yə port edilmiş glxgears da daxil olmaqla, bir sıra nümayiş nümunələri var. Layihənin kodu LGPLv2.1 lisenziyası altında yayımlanır.
libvkd3d kitabxanası Direct3D 12-nin əksər imkanlarını dəstəkləyir, bunlara qrafika və hesablama vasitələri, növbələr və əmrlər siyahısı, deskriptorlar və yığın deskriptorları, kök imzaları, qeyri-sıralı giriş, Sampler-lər, əmrlərin imzaları, kök sabitləri, qeyri-dolayı (indirect) render, Clear*() və Copy*() metodları daxildir. libvkd3d-shader kitabxanasında şader modellərinin bytecode-un SPIR-V arasındakı çevrilməsi həyata keçirilir. Piksel, vertex, tessellation, hesablama və sadə geometrik şaderlər, kök imzasının seriyalaşdırılması və deserializasiya dəstəklənir. Şader instruktorlarından hesablamalar, atomar və bit əməliyyatları, müqayisə və məlumat ötürmə axınını idarə edən operatorlar, sample, gather və load instruktorları, qeyri-sıralı giriş (UAV, Unordered Access View) əməliyyatları həyata keçirilir.
Yeni versiyada:
- HLSL kompilyatoruna dövrün açılması (loop unrolling) dəstəyi əlavə edilib ki, bu optimizasiya, prosessorun keşini daha səmərəli istifadə etmək və dövr əməliyyatlarını bir neçə ardıcıl koda əvəz etmək üçün həyata keçirilir.
- Dördüncü nəsil şaderlərin bəzi vəziyyət obyektləri üçün effekt kompilyatorunun dəstəyi əlavə edilib.
- Dördüncü nəsil şaderlərdə BlendState, ComputeShader, DomainShader, GeometryShader, HullShader, DepthStencilState və RasterizerState tiplərinə dəstək təmin edilib, həmçinin OMSetRenderTargets(), SetBlendState(), SetComputeShader(), SetDomainShader(), SetGeometryShader(), SetHullShader(), SetPixelShader(), SetVertexShader(), SetDepthStencilState() və SetRasterizerState() funksiyalarına dəstək olaraq təmin edilib.
- Şader kompilyatorunda qlobal dəyişənlərin, funksiyanın parametrlərinin və annotasiyaların ilkin dəyərlərinin müxtəlif formatlarda saxlanması və解析 edilməsi üçün dəstək təmin edilib.
- Şader modeli 5.1 üçün register sahəsinin dəstəyi əlavə edilib.
- İç içə funksiyalar tex1D(), tex2D(), tex3D(), texCUBE(), asint(), f16tof32(), faceforward(), GetRenderTargetSampleCount(), rcp(), tex2Dbias(), tex1Dgrad(), tex2Dgrad(), tex3Dgrad() və texCUBEgrad() həyata keçirilib.
- libvkd3d-yə ID3D12CommandList6 interfeysi əlavə edilib və xüsusilə bloklar (məsələn, 4×4 piksel ölçüsü) səviyyəsində sıxma imkanı reallaşdırılıb.
- vkd3d_shader_parameter_info strukturu və 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 və VKD3D_SHADER_PARAMETER_TYPE_BUFFER parametrlərinə dəstək əlavə edilib.
Mənbə: opennet.ru
