Праект Wine выпусціў Vkd3d 1.2 з рэалізацыяй Direct3D 12

Праект Wine апублікаваў выпуск пакета vkd3d 1.2 з рэалізацыяй Direct3D 12, якая працуе праз трансляцыю выклікаў у графічны API Vulkan. У склад пакета ўваходзяць бібліятэкі libvkd3d з рэалізацый Direct3D 12, libvkd3d-shader c транслятарам 4 і 5 мадэлі шэйдараў і libvkd3d-utils з функцыямі для спрашчэння партавання прыкладанняў Direct3D 12, а таксама набор дэманстрацыйных прыкладаў, у тым ліку порт. распаўсюджваецца пад ліцэнзіяй LGPLv2.1.

Бібліятэка libvkd3d падтрымлівае большую частку магчымасцяў Direct3D 12, уключаючы сродкі для графікі і вылічэнняў, чэргі і спісы каманд, дэскрыптары і дэскрыптары кучы, каранёвыя подпісы, неўпарадкаваны доступ, Sampler-ы, сігнатуры каманд, каранёвыя канстанты, непрамую (indirect) адмалёўку, метады Clear*() і Copy*().

У libvkd3d-shader рэалізавана трансляцыя байткода 4 і 5 мадэляў шэйдараў у прамежкавае паданне SPIR-V. Падтрымліваюцца вяршынныя, піксельныя, тесселяционные, вылічальныя і простыя геаметрычныя шэйдары, серыялізацыя і дэсерыялізацыя каранёвага подпісу. З шэйдарных інструкцый рэалізаваны арыфметычныя, атамарныя і бітавыя аперацыі, аператары параўнання і кіравання струменем перадачы дадзеных, інструкцыі sample, gather і load, аперацыі неўпарадкаванага доступу (UAV, Unordered Access View).

Сярод найбольш значных навін у Vkd3d 1.2 вылучаюцца:

  • Гатоўнасць бібліятэкі libvkd3d-shader для выкарыстання ў іншых праектах.
  • Падтрымка теселяцыйных шэйдараў.
  • Падтрымка пераўтварэння, серыялізацыі і дэсерыялізацыі каранёвых сігнатур (vkd3d_serialize_versioned_root_signature() і vkd3d_create_versioned_root_signature_deserializer()).
  • Падтрымка струменевага вываду.
  • Рэалізацыя шматлікіх раней недаступных магчымасцяў Direct3D 12, уключаючы падтрымку мультысэмплінга, рэзерваванні рэсурсаў,
    ўскоснай індэксаваць адмалёўкі, рэндэрынгу глыбіні без піксельных шэйдараў, адначасовага доступу да рэсурсаў іх розных чэргаў каманд, нулявых уяўленняў (Null-views).

  • Дададзеныя зменныя асяроддзі: VKD3D_CONFIG для ўсталёўкі опцый для змены паводзін libvkd3d і VKD3D_VULKAN_DEVICE для перавызначэння прылады для API Vulkan.
  • Дададзена падтрымка шэйдарных інструкцый bufinfo,
    eval_centroid,
    eval_sample_index,
    ld2ms,
    sample_b,
    sample_d,
    sample_info,
    samplepos.

Крыніца: opennet.ru

Дадаць каментар