Bag-ong mga makina sa pag-render para sa OpenGL ug Vulkan gidugang sa GTK

Gipahibalo sa mga nag-develop sa librarya sa GTK ang pagkaanaa sa duha ka bag-ong makina sa pag-render - "ngl" ug "vulkan", gamit ang OpenGL (GL 3.3+ ug GLES 3.0+) ug Vulkan graphics API. Ang bag-ong mga makina gilakip sa eksperimento nga pagpagawas sa GTK 4.13.6. Sa eksperimento nga GTK nga sanga, ang ngl nga makina kay gigamit na karon pinaagi sa default, apan kung ang mahinungdanong mga problema mailhan sa sunod nga stable nga branch 4.14, ang daan nga "gl" rendering engine ibalik.

Ang mga bag-ong makina gipahimutang ingon nagkahiusa ug gitigum gikan sa usa ka base sa code. Ang esensya sa panaghiusa mao nga ang Vulkan API gigamit ingon nga sukaranan, sa ibabaw diin ang usa ka bulag nga lebel sa abstraction gihimo alang sa OpenGL, nga gikonsiderar ang mga kalainan tali sa OpenGL ug Vulkan. Kini nga pamaagi nagpaposible sa paggamit sa usa ka komon nga imprastraktura sa duha ka makina alang sa pagproseso sa talan-awon nga graph, mga pagbag-o, pag-cache sa mga texture ug mga glyph. Ang paghiusa usab hinungdanon nga gipasimple ang pagmentinar sa base sa code sa parehas nga mga makina ug gipadayon kini nga hangtod karon ug na-synchronize.

Dili sama sa karaan nga gl engine, nga migamit ug bulag nga simple nga shader para sa matag matang sa render node ug matag karon ug unya nga paghan-ay sa datos atol sa offscreen rendering, ang bag-ong mga makina imbes sa offscreen rendering naggamit ug complex shader (ubershader) nga naghubad sa datos gikan sa buffer. . Sa karon nga porma niini, ang bag-ong implementasyon naa gihapon sa luyo sa daan sa mga termino sa lebel sa pag-optimize, tungod kay ang panguna nga pokus sa karon nga yugto mao ang husto nga operasyon ug kadali sa pagpadayon.

Bag-ong mga bahin nga nawala sa daan nga gl engine:

  • Contour smoothing - nagtugot kanimo sa pagpreserbar sa maayong mga detalye ug pagkab-ot sa mas hapsay nga mga contour.
    Bag-ong mga makina sa pag-render para sa OpenGL ug Vulkan gidugang sa GTK
  • Pagporma sa arbitraryong mga gradient, nga makagamit sa bisan unsang gidaghanon sa mga kolor ug anti-aliasing (sa gl engine, linear lang, radial ug conical gradients nga adunay 6 stop color ang gisuportahan).
    Bag-ong mga makina sa pag-render para sa OpenGL ug Vulkan gidugang sa GTK
  • Fractional scale, nga nagtugot kanimo sa pagtakda sa non-integer scale nga mga kantidad, pananglitan, kung gamiton ang usa ka sukdanan nga 125% alang sa usa ka bintana nga 1200x800, usa ka buffer nga 1500x1000 ang igahin, ug dili 2400x1600 sama sa daan nga makina.
  • Suporta alang sa DMA-BUF nga teknolohiya para sa paggamit sa daghang mga GPU ug pag-offload sa indibidwal nga mga operasyon ngadto sa laing GPU.
  • Daghang mga rendering node nga adunay mga problema sa daan nga pagpatuman giproseso sa husto.

Ang mga limitasyon sa bag-ong mga makina naglakip sa kakulang sa suporta alang sa pagpoposisyon pinaagi sa dili-integer nga mga kantidad (fractional nga posisyon) ug glshader nodes, nga gihigot pag-ayo sa mga bahin sa daan nga makina, ug nga dili na kinahanglan human sa pagdugang sa suporta alang sa mga node nga adunay mga maskara (mask) ug mga texture nga adunay transparency. Gihisgutan usab nga adunay posibilidad nga posible nga mga problema sa mga drayber sa graphic nga mitumaw tungod sa mga pagbag-o sa pamaagi sa pagtrabaho sa mga drayber.

Sa umaabot, base sa bag-ong nahiusa nga modelo, ang paghimo sa mga makina sa pag-render gamit ang Metal sa macOS ug DirectX sa Windows dili iapil, apan ang paghimo sa ingon nga mga makina komplikado pinaagi sa paggamit sa ubang mga sinultian alang sa mga shaders (ang "ngl " ug "vulkan" nga mga makina naggamit sa GLSL nga pinulongan, mao nga alang sa Metal ug Direct kinahanglan nga magdoble sa mga shader o mogamit og layer base sa SPIRV-Cross toolkit).

Ang umaabot nga mga plano naglakip sa paghatag og suporta sa HDR ug mga himan alang sa husto nga pagdumala sa kolor, suporta alang sa Path rendering sa kilid sa GPU, ang abilidad sa pag-render sa mga glyph, off-stream rendering, ug performance optimizations para sa mas daan ug ubos nga power device. Sa kasamtangan nga porma niini, ang performance sa "vulkan" nga makina duol sa performance sa daan nga "gl" nga makina. Ang "ngl" nga makina mas ubos sa performance kaysa sa daan nga "gl" nga makina, apan ang anaa nga performance igo na alang sa paghubad sa 60 o 144 FPS. Gilauman nga mabag-o ang kahimtang pagkahuman sa pag-optimize.

Source: opennet.ru

Idugang sa usa ka comment