ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Wine ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π» Vkd3d 1.13 с Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Direct3D 12

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Wine ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π» выпуск ΠΏΠ°ΠΊΠ΅Ρ‚Π° vkd3d 1.13 с Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Direct3D 12, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅ΠΉ Ρ‡Π΅Ρ€Π΅Π· Ρ‚Ρ€Π°Π½ΡΠ»ΡΡ†ΠΈΡŽ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Π² графичСский API Vulkan. Π’ состав ΠΏΠ°ΠΊΠ΅Ρ‚Π° входят Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ libvkd3d с Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ Direct3D 12, libvkd3d-shader c транслятором 4 ΠΈ 5 ΠΌΠΎΠ΄Π΅Π»ΠΈ ΡˆΠ΅ΠΉΠ΄Π΅Ρ€ΠΎΠ² ΠΈ libvkd3d-utils с функциями для упрощСния портирования ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Direct3D 12, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°Π±ΠΎΡ€ дСмонстрационных ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ², Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΏΠΎΡ€Ρ‚ glxgears Π½Π° Direct3D 12. Код ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° распространяСтся ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ LGPLv2.1.

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° libvkd3d ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ возмоТностСй Direct3D 12, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ срСдства для Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ ΠΈ вычислСний, ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ ΠΈ списки ΠΊΠΎΠΌΠ°Π½Π΄, дСскрипторы ΠΈ дСскрипторы ΠΊΡƒΡ‡ΠΈ, ΠΊΠΎΡ€Π½Π΅Π²Ρ‹Π΅ сигнатуры, нСупорядочСнный доступ, Sampler-Ρ‹, сигнатуры ΠΊΠΎΠΌΠ°Π½Π΄, ΠΊΠΎΡ€Π½Π΅Π²Ρ‹Π΅ константы, Π½Π΅ΠΏΡ€ΡΠΌΡƒΡŽ (indirect) отрисовку, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Clear*() ΠΈ Copy*(). Π’ libvkd3d-shader Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° трансляция Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄Π° ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΡˆΠ΅ΠΉΠ΄Π΅Ρ€ΠΎΠ² Π² ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ΅ прСдставлСниС SPIR-V. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Π²Π΅Ρ€ΡˆΠΈΠ½Π½Ρ‹Π΅, ΠΏΠΈΠΊΡΠ΅Π»ΡŒΠ½Ρ‹Π΅, тСссСляционныС, Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΈ простыС гСомСтричСскиС ΡˆΠ΅ΠΉΠ΄Π΅Ρ€Ρ‹, сСриализация ΠΈ дСсСриализация ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ сигнатуры. Из ΡˆΠ΅ΠΉΠ΄Π΅Ρ€Π½Ρ‹Ρ… инструкций Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ арифмСтичСскиС, Π°Ρ‚ΠΎΠΌΠ°Ρ€Π½Ρ‹Π΅ ΠΈ Π±ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ сравнСния ΠΈ управлСния ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, инструкции sample, gather ΠΈ load, ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ нСупорядочСнного доступа (UAV, Unordered Access View).

Π’ Π½ΠΎΠ²ΠΎΠΉ вСрсии:

  • Π’ компилятор HLSL Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° разворачивания Ρ†ΠΈΠΊΠ»ΠΎΠ² (loop unrolling, оптимизация, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ для Π±ΠΎΠ»Π΅Π΅ эффСктивного использования процСссорного кэша ΠΈ сокращСния вСтвлСния Ρ†ΠΈΠΊΠ»ΠΈΡ‡Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ замСняСтся Π½Π° нСсколько ΠΈΠ΄ΡƒΡ‰ΠΈΡ… Π΄Ρ€ΡƒΠ³ Π·Π° Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΊΠΎΠΏΠΈΠΉ ΠΊΠΎΠ΄Π°).
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° компилятора эффСктов для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² состояния Ρ‡Π΅Ρ‚Π²Ρ‘Ρ€Ρ‚ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΡˆΠ΅ΠΉΠ΄Π΅Ρ€ΠΎΠ².
  • ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ‚ΠΈΠΏΠΎΠ² Ρ‡Π΅Ρ‚Π²Ρ‘Ρ€Ρ‚ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΡˆΠ΅ΠΉΠ΄Π΅Ρ€ΠΎΠ² BlendState, ComputeShader, DomainShader, GeometryShader, HullShader, DepthStencilState ΠΈ RasterizerState, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ OMSetRenderTargets() SetBlendState(), SetComputeShader(), SetDomainShader(), SetGeometryShader(), SetHullShader(), SetPixelShader(), SetVertexShader() SetDepthStencilState() ΠΈ SetRasterizerState().
  • Π’ компиляторС ΡˆΠ΅ΠΉΠ΄Π΅Ρ€ΠΎΠ² Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ€Π°Π·Π±ΠΎΡ€Π° ΠΈ хранСния Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ для Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΉ.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° рСгистрового пространства ΡˆΠ΅ΠΉΠ΄Π΅Ρ€Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ 5.1.
  • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ встроСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ tex1D(), tex2D(), tex3D(), texCUBE(), asint(), f16tof32(), faceforward(), GetRenderTargetSampleCount(), rcp(), tex2Dbias(), tex1Dgrad(), tex2Dgrad(), tex3Dgrad() ΠΈ texCUBEgrad().
  • Π’ libvkd3d Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ интСрфСйс ID3D12CommandList6 ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ создания тСкстур, сТатиС ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… осущСствляСтся Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ² (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ ΡΠΆΠΈΠΌΠ°ΡŽΡ‚ΡΡ Π±Π»ΠΎΠΊΠΈ, Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 4×4 пиксСля).
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° структуры vkd3d_shader_parameter_info ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² 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 ΠΈ VKD3D_SHADER_PARAMETER_TYPE_BUFFER.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru