Projekt Wine vydal Vkd3d 1.13 s implementací Direct3D 12

Projekt Wine vydal verzi balíčku vkd3d 1.13 s implementací Direct3D 12, která funguje prostřednictvím překladu volání do grafického API Vulkan. Balíček zahrnuje knihovny libvkd3d s implementací Direct3D 12, libvkd3d-shader s překladatelem modelu shaderu 4 a 5 a libvkd3d-utils s funkcemi pro usnadnění portování aplikací Direct3D 12, stejně jako sadu demonstračních příkladů, včetně portu glxgears na Direct3D 12. Kód projektu je šířen pod licencí LGPLv2.1.

Knihovna libvkd3d podporuje většinu funkcí Direct3D 12, včetně nástrojů pro grafiku a výpočty, front a seznamů příkazů, popisovačů a popisovačů hromady, kořenových podpisů, neuspořádaného přístupu, Sampler-ů, podpisů příkazů, kořenových konstant, nepřímého (indirect) vykreslování, metod Clear*() a Copy*(). V libvkd3d-shader byla implementována translace bajtkódu modelů shaderů do mezivrstvého formátu SPIR-V. Podporovány jsou vrcholové, pixelové, tesselační, výpočetní a jednoduché geometrické shadery, serializace a deserializace kořenového podpisu. Z instrukcí shaderu byly implementovány aritmetické, atomové a bitové operace, operátory porovnání a řízení toku dat, instrukce sample, gather a load, operace neuspořádaného přístupu (UAV, Unordered Access View).

V nové verzi:

  • Do kompilátoru HLSL byla přidána podpora rozvinutí cyklů (loop unrolling, optimalizace, při které se pro efektivnější využití procesorové cache a snížení větvení cyklické operace nahrazují několika po sobě jdoucími kopiemi kódu).
  • Byla přidána podpora kompilátoru efektů pro některé objekty stavu čtvrtého modelu shaderů.
  • Byla zajištěna podpora typů čtvrtého modelu shaderů BlendState, ComputeShader, DomainShader, GeometryShader, HullShader, DepthStencilState a RasterizerState, stejně jako funkcí OMSetRenderTargets(), SetBlendState(), SetComputeShader(), SetDomainShader(), SetGeometryShader(), SetHullShader(), SetPixelShader(), SetVertexShader(), SetDepthStencilState() a SetRasterizerState().
  • V kompilátoru shaderů byla implementována podpora analýzy a ukládání v různých formátech hodnot inicializace pro globální proměnné, parametry funkcí a anotace.
  • Byla přidána podpora registračního prostoru shaderové modelu 5.1.
  • Byly implementovány vestavěné funkce tex1D(), tex2D(), tex3D(), texCUBE(), asint(), f16tof32(), faceforward(), GetRenderTargetSampleCount(), rcp(), tex2Dbias(), tex1Dgrad(), tex2Dgrad(), tex3Dgrad() a texCUBEgrad().
  • Do libvkd3d byl přidán rozhraní ID3D12CommandList6 a byla implementována možnost vytvářet textury, jejichž komprese se provádí na úrovni jednotlivých bloků (například jsou odděleně komprimovány bloky o velikosti 4×4 pixelů).
  • Byla přidána podpora struktury vkd3d_shader_parameter_info a parametrů 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 a VKD3D_SHADER_PARAMETER_TYPE_BUFFER.

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster