Naglabas ang proyektong Wine ng isang bagong bersyon ng paketeng vkd3d 1.2 na may implementasyong Direct3D 12 na gumagana sa pamamagitan ng pagsasalin ng mga tawag sa Vulkan graphics API.
Ang bagong bersyong ito ng vkd3d 1.2 ay naglalaman ng ilang mga pagpapabuti, ngunit ang mga pangunahing namumukod-tangi ay ang pagkakaroon ng libvkd3d-shader bilang isang pampublikong aklatan , suporta para sa mga tessellation shader, pati na rin ang suporta para sa stream output.
Kasama sa pakete ang libvkd3d library na may mga implementasyon ng Direct3D 12, ang libvkd3d-shader library na may model 4 at 5 shader translator, at ang libvkd3d-utils library na may mga function upang gawing simple ang paglipat ng mga aplikasyon ng Direct3D 12, pati na rin ang isang hanay ng mga demo, kabilang ang glxgears port papunta sa Direct3D 12. Ang project code ay ipinamamahagi sa ilalim ng lisensyang LGPLv2.1.
Sinusuportahan ng libvkd3d library ang karamihan sa mga tampok ng Direct3D 12, kabilang ang mga graphics at compute function, mga command list at queues, mga descriptor at heap descriptor, root signatures, unordered access, mga sampler, command signatures, root constants, indirect rendering, atbp.
Ipinapatupad ng Libvkd3d-shader ang pagsasalin ng bytecode 4 at 5 ng mga shader model patungo sa intermediate SPIR-V representation. Sinusuportahan ang mga Vertice, pixel, tessellation, simple at computational geometry shaders, root signature serialization, at deserialization.
Kasama sa mga instruksyon ng shader ang mga operasyong aritmetika, atomika, at bit-by-bit, mga operator ng pagkontrol at paghahambing ng daloy ng datos, mga instruksyon sa pagsa-sample, pagtitipon, at paglo-load, at mga operasyong hindi nakaayos para sa pag-access (UAV, Unordered Access View).
Sa yugtong ito ng pag-unlad, hindi lahat ng Direct3D 12 calls ay naipatupad na , at ang pagsubok ay pangunahing isinagawa sa isang hanay ng mga demo application. Hindi kasama sa release na ito ang mga feature na ginagawa pa lamang tulad ng suporta para sa tessellation at complex geometry shaders, pati na rin ang ilang mga pagpapabuti na may kaugnayan sa mga shader at mga pangunahing pamamaraan ng Direct3D 12. Ang mga feature na ito ay iaalok sa susunod na release.
Pangunahing mga bagong tampok ng Vkd3d 1.2
Isa sa mga pinakamahalagang pagbabago sa bagong bersyon ay ang pagkakaroon ng libvkd3d-shader library para magamit sa mga proyekto ng ikatlong partido, dahil maraming tampok ng Direct3D 12 ang naidagdag, tulad ng:
- Multi-sampling.
- Nakareserba na mapagkukunan.
- Mga rate ng pagpasa ng data ng instance
- "Pribadong data" API para sa lahat ng mga interface.
- Mga pagmamapa ng bahagi ng view ng mapagkukunan ng shader
- VK_KHR_draw_indirect_count extension.
- Predicate / kondisyon na representasyon.
- Lalim na pag-render nang walang pixel shader.
- Pagputol ng lalim. Kinakailangan nito ang VK_EXT_depth_clip_enable extension.
- Itapon ang rasterizer.
- Paghahalo ng dalawahang pinagmulan.
- Pagma-map ng mga inilagay na mapagkukunan.
- Ang mga pamamaraan ng ReadFromSubresource () at WritingToSubresource () ID3D12Resource.
- Sabay-sabay na pag-access sa mga mapagkukunang multi-pila.
- Mga null view. Iyon ay, mga panonood nang walang pinagbabatayan na mapagkukunan.
- Marami pang mga pagtatanong sa suporta sa tampok.
Bukod pa rito, kapansin-pansin din ang karagdagang suporta para sa pag-convert, pag-serialize, at pag-deserialize ng mga root signature (vkd3d_serialize_versioned_root_signature() at vkd3d_create_versioned_root_signature_deserializer()) , pati na rin ang suporta para sa streaming output.
Isa pang kapansin-pansing pagbabago ay ang pagpapatupad ng mga environment variable: VKD3D_CONFIG upang magtakda ng mga opsyon upang baguhin ang gawi ng libvkd3d at VKD3D_VULKAN_DEVICE upang i-override ang device para sa Vulkan API.
Bukod pa rito, idinagdag ang suporta para sa mga tagubilin sa pagtatabing na bufinfo, eval_centroid, eval_sample_index, ld2ms, sample_b, sample_d, sample_info, samplepos at paunang suporta para sa mga shader ng model 5.1.
At sumusuporta din para sa mga kapaligiran sa target na OpenGL SPIR-V. Pinapayagan nitong magamit ang SPIR-V ng libvkd3d-shader na magamit sa GL_ARB_gl_spirv. Kasama rito ang suporta para sa OpenGL atomic counter at pinagsamang mga sampler.
Panghuli, kung gusto mong matuto nang higit pa tungkol sa bagong bersyong ito, maaari mong tingnan ang kumpletong listahan ng mga pagbabago sa sumusunod na link.
Paano i-install ang vkd3d sa Linux?
Para sa mga interesadong ma-install ang vkd3d sa kanilang system, dapat nilang makuha ang source code at magpatuloy sa pagtitipon, bagaman para sa mga praktikal na layunin o para sa mga newbies, maaari nilang subukan ang library na ito nang walang labis na pagsisikap. Para sa mga ito, kailangan lamang nilang mag-install ng lutris at sa loob ng mga pagsasaayos nito.
Tulad ng para sa mga interesado sa pagtitipon, dapat silang makakuha ng code na may:
git clone git://source.winehq.org/git/vkd3d.git/
./autogen.sh
./configure
make
../vkd3d/configure --build=i686-pc-linux-gnu "CPPFLAGS=-m32" "LDFLAGS=-m32"
Sa wakas, dapat paganahin ang mga layer ng Vulkan:
export VK_INSTANCE_LAYERS=VK_LAYER_LUNARG_standard_validation
VKD3D_CONFIG=vk_debug