From ec019ba45cf6d6298a181efa3217467979d1e28f Mon Sep 17 00:00:00 2001 From: Kbz-8 Date: Tue, 4 Nov 2025 20:33:04 +0100 Subject: [PATCH] removing garbage file --- example/__pycache__/main.cpython-313.pyc | Bin 1220 -> 0 bytes .../__pycache__/__init__.cpython-313.pyc | Bin 0 -> 15899 bytes runtime/Includes/Graphics/Drawable.h | 2 +- runtime/Includes/Renderer/Descriptor.h | 5 ++- runtime/Sources/Renderer/Descriptor.cpp | 29 ++++++++++++------ .../Sources/Renderer/RenderPasses/2DPass.cpp | 4 +-- .../Renderer/RenderPasses/FinalPass.cpp | 2 +- 7 files changed, 25 insertions(+), 17 deletions(-) delete mode 100644 example/__pycache__/main.cpython-313.pyc create mode 100644 macrolibpy/__pycache__/__init__.cpython-313.pyc diff --git a/example/__pycache__/main.cpython-313.pyc b/example/__pycache__/main.cpython-313.pyc deleted file mode 100644 index 7cc1e6c7e1230689f07670a528725f03d751a8a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1220 zcmZ`&&rcIk5T5Ps((OV8te~R622V|pMzm^>m=M6AmJ+)lBsAHS_N8s;?$&K91rvh@ z185BO0Mwh_^k)1!JV+oyo*Ya(ack%wp!2p}%Eg!L%=doIH}lO_yl$-07SV+lXJY`Bc29!P_PaxF)Bv9&T7M}yeg<- zkgu&+ZndckEJ<~v^+er~j>bs`VeC!^H+}BJZF2s=_myz`v96z-$^Va^H@W%R>R{# zymFjClVL3X0=(qG&r{Kg8A(EURFQhJ=_1K!*+L#G&J`)QoMTKB#gfob$utVtL@ZA% zA5NR`%Q1ad;i$c{^sL;seRX~0sH3ZVqr9*kEpbO}z8&v-Z#n*PsROJC)m zZTG4?boQO_aK6W4|E0f`$~tSNOnL!T5cCXMY&j#Q6HTM;QPaqiVxBg|Ey7~6icr}g zOIoe*tX5pGHM40kmYS_2^^7w)rL<4?!K)6^SFBs9C1Ql_~`1qQ!> z&8D8|ux=&_8FJrJ@NuSOu7IY(a~$^zF8}76*H`xV%ZKv0&Hj!41G#%w?%tDoS4R(J z@8-b9K-pK0|F{<1lW(t%o(L}S%8A5_!xb4sX)W|BRJyR!^Sf3F$P-101WQqG$ChPfWQmSRQIyRi^)RWx5O5@6g8;J! zS`wqyu-%E}IF9K$8dHYOt>GRKNCmXq zv{k9BS3I;;rFhqHqs{q65-8KVjJ%!Z(tk#0b6t)InYc1G@Au+gN z>`s{F9tlTCG9EiMdRG2f`g3w>IF@LYA2^#DP9|az`BW?sjU|ROIr*4MV726FUF;YM52?D?{+OCbg=ammOBqV)?5G-52j#JZ z78^>aQ8_XkCh}M;k-9UKy1Voc=%gcd?!X~=V;)P!qH=S~Nc>D_a4ZqQ9R`~b7|h3| zrN~$$CF8gV+h}MwoQTF%(vl0j>7>*2rSj)6*iEOz@cr{=P*A}e2!CPSyfY^^^wb_|0HaH+sF+NmPZLrCiabcef+hYq!$IC$h(w|tMht<_q`=;(U@ zz}xe|hmZ6r?Z%89CA#RGoh3Ss-QV8c1^9O5_Z{o#25h1BqwU?j(7T)NfxT3A-vw`$ zLnVV15u%1uYABW%OcuN&GMQ3ZCTb$8l29s4hEzkikftC3T8au@i=2w3;wqyncA==9 zjzv?$`JiDnHZ+`rA#`st8JA-k2wgm`!B*5nc7oMOR4q1+%9G2t;_Vx+nj@Q(hp|K~ z)oh3{6>}V*sj1N5s1_PZhU3izGg|5Hp|@~SR0Z-S&zh27IL{c4*x2Ui@(J~{@mM&% z)gWMYLMVqBEwGEh&AmNd0ig zs9Z3FOdeLiO2z8dXp1Cq1(aD)yER@Wf@%VVuMj1u!fg?=MP}4&k&DQggYrX@a|Lvf zxEdxm6~25?Y0Vl#5KAzLrCyh5Xy`ZC+iA+@7J0Z3T{s#I#goa=&~P&OXfY#DQJY%^ z*%{OlY?TqvB9Deic%%>&qAA2sYD@^M*saEmB*!#0qzxxef4Gsuv1pOh7p~24j)2op zh?5cBFc$E$va&HeC?lY}#i+pKt{@A^M2H>=#q&zZLH7KRX_L{PG6a?}xUn)5*2*bMvUU$tJTKp#zNB2&KA5brBg&dqb3z#cx`GWM$z&(|`NeZpIbs zJOw@*=u^qx$l}mF$+W)33#176-oFKbf@7ER6wdNOu2HW5+}dJVXT@MNoGLPA=Dd&= z39l?fIJ;FIj3>h>nGQC#5MeP3t1&EsKYr=^(73?$TYWu7Xk!7O(PIROxiEz{L$qcC z90q)fZ7bh+3v7yg&vA~UqlH_KF1fZ?w6*|iI~3GU_Oj6O>UWN}VAkq#WKYXdm|j z+m(Y|JGSg-+XkZ2wv7r2Lf8|Eh4DoEFlD?lcfz(dDoW#J<|z6|0yt2j(?GOH1w4{f zSRtuN4ODt%mfuP=zJoD*E%ZDLe;RWACJg^s`Tl8Xe?Gf6U4DGJ{3FxSM@lk$-oNJj zxoK%_4!4aY3#`I%4)_D=@JrXAaRJgm30~n7HpP~(_i>fn{p&a`A=Kq^0Y(>=UY@OnhiI8MM&@X`Ft`hA4o~2VCvrecVpL& z@_2ch+tn3@h*BjaN%qJ=Q1QXR7+8jQa#T&|&Lc`Y_5>Ze+fqcZ0CAWTf;qa>)7y10 z)P3Zb?xC%Zbsf2Pf0r(x(baiXLn>l$D$9(&UhqJ}(Jr)=4xEB3m(TJCy0(;EsLCg^%BRsYUfwieD?nTTC_v+1Fag? zeQxz0+uynO2gJ7p+kUV3wpWC91UjrDK?|76FWmuD1;w|-q#vNHm>E2ieKIIiB8SOl zKL}177|Hi>Js=i^r5{(KrH5uH%_jo}B2ZZReI}#_)v%y6aQ&!cw3s{VsWKti-;yv? z%7S9PMIUbpw24*b4ktJ!*cNsAIJ38ro8r5JUdnHR+DvV@?g)>9kVSP{QX`uIstb=K zV<2=WJRqyO@Bm7Y6rz4&D5N_e7J=hLcS3d|8GlR-+DHSPhJK=ka&L;6JH!O|aQqC} z1@N=*rwu^`)++zA4n(PvvYw>?|N2G zx-*`Q)56B$!^5Boztjr5xWEl?gon(sP2q`Mu@OPB6HyU}LlKEnaS%yy5|<(o_mC^- z)?MwG6YGVP*o`M)HlZ4h2+4Y=ZlDm}KvQu8Z3?xh-9Zo14e0`ObB97B$>>-d+ul&< z6Jz1H(Nm7JC0Ytx12vI^Zl{r9(?w|XJ)pa+44UqwO@O&+gJ#HdZ*E3RuMUO4BS^&} zp>PU($5Ue|RSSg*Y&^LGcZn6gj3z_%DQ@0Zp8nXpw=CU0?+>Iq*khm~-8o-b^;8!- zAaF{aURpFokuIj`kR7wYAOh5c-S{*NGKeFRz4&ksR{OB}C|37jwF)ciJRKS0i1GW9RPXOD(bb_Dd(SXt)!;BXJxyT?5=zNayLFmGQdO_jJW zq~bpQ0@urDZx3W{h$Ah~K?xJI=@JC%1l+MOXyaMTTQj{&GxIJ+5TwhYk?^Bx7bFQV z2alv^+Z#^;S+sp^bi@mQQA1<*t2FnH@0bV?xg0MjLtfTR;w{v)WSY@{38N1&oB zK5QH)fuf~IFN~SMaoeGS1r|i<>47H(CbncmdD+H`fh9ZV*Z`-77~_$QaXaKw$T7g73wS*ON7+ey;0=AU z+$HSnO&-AXAPK>Uzl1++3sfN2lIMBnGtLQbMp~cVzu>Q&IQXJ#vUA42IlVs}e&XPt zcFcRc=O27#SNafTLIh@6#n?H&bQwU!wo~ybc6!Sv4mgx@MZmUcec*)hD_SY7K&C>mDyh!Nd2E2g8s*iv~sAj-Hfc!kK{;y8F7i=&=SAu}9(> zRH-w0^l-3y5#47}gFR2dP7LvT*B5v`{!IMY#CiL?$M?C7FEzi={Om^;D%MP|ZOv3{ znf7k^VR^;G&S%e@FJ}}(CYc4_mQw5}G;T#PaF)@%DJcDx1D&OU>6Ti@7O2}JFi-a* z0cg(1xPc-O08<47)l+eZ9j>49NZ`#KuUDCb$c4TP6SXx^QEi-)*3C%kCVMZPxOn2L z_G<^eB3+lZukh|EnE2a!_mzVO^NK%983&_G04bAqHNZ%Nrzn*cg1Tf9$u^kCqfuGj zOugD9QXcqKK%g~1Wl(ATjI@3-dMS1>HXGdY#*R#I-?!}Fmfi+x8CjQHT|hfaCFM=f zxLZ*xs~-tRj(b%?dioq$V~7eO7J{`mKHB^jjGN==Ykl`cWon>A?`8pnyKr6@cKe&tYm$!rAA{ zp-BnqS(a&oiAS-UbWr*JjVAQC)5OUR#?>fn?D8e=;`IY@EH$|0&hcvO&tBh}R;+>v z;sBtf(x{i^U61P?dYf=+Y;aH|xigNKo?HI9k^bWcL}b0 z;nBMGX1d|a-wsm@^!f>MA}CSAL7qUslUSvp(p?r3-JQMo)CIg-rYSJ$_+m-~3-g=Z z*>~0}OdZO?{uc0Rm!L{>%YM#Z`TXf;PEW7imMPzUURYQ!UpjvA_<3PgTC-4H^HS)A z(B;0X16KxKZpv)hlc~P@yzm(}bWB#i_z-Qbs-4{Y;-k>?EUe#fxh1oH3!A%6zFhnH zBiOE8@CD|4@{CWuTy?efO6|3S8Q=C|E59RCv2)tHbD_L?BAO|erzM%$I?z_Dpp9nQ z3yoW8?}xYZIkw-@AJf7?e$KwKEwrT9N~mP*21u`^yT|Q0(hH|+l_?JF2E{mHB_=Cn zd7atgC2K=jFo`+}rxG4HS;+xUd}K&NMa#;B3;9o1(gV37K|%ivL$!lYfk{PX)zA3q zFAG;)S6pA+d2Q?~dtTGtxZ~ANW_$;V*|t4Xv18i1W1+liqBleH;VU>a_reml$2QX( zWDguWBNX*T@B*3AXo{z#(9oSSltI8w-D|!xK2786Vk(Pyz20ZM6TL5;c;Uo#ss8u7 zc`tGqcZ4_FjL9$J-g34tncZ1W(u8DiD2Ca_L0B^*)l61hs=ZiyT{3b;h{!C~(f4Nn z0WMg5efSk3X9_$C1_Ch9EBh4kx7mB!``F zbBZY+#^FjNl6f5)Vc)DVT48ukEjTHpn$sAsmz#Vy06%~!+D@o|W}b?PU6ZRWSIv1g z&v-U3c+2O!8)v*5FCVOASz^Im~tk=Dq&syPoNKuKQODcPx>pl7u~Y`5-;1k zr);`|sHriM(1q?~0&}8QVa&Lz$)IBs7#j^B^dO{t?y3yTP?Z;sp%N~^sp)DD2W0Gec){Bz>f`^ zf`L*wIo$;r#dtD>S;Qe2u6rVI^`MQY@OfyIByl}-q6y}A$)~Y;9;?q`g$W7D6!HaZ zA;Sx^dl*#G$nuNO(4K_~GLin;bjPy5i?xdm&JkF$31SUq90H5jTK4kdj%5cgcJhmU zZf*ViT6wXoLfr7v@`^Fy%1F{^<5Vd0mCp)L`)d(FUIDPv(fB$a(exbB2d zo`vfYgzy0?D0e9pMo{jCP@M(k9t_Ee7Xt9IAy2T1dOSDYfi*$YaYGP8gCiF)wgUi; zLp6bCerX*v@}uzMa@}DQIUWA?8GxbA$-t5Tt$)<9Rs~BP$+%7e-J;z<7N1 zXIxO3K{@WgEa*(r-TVzSZtn~$6?T@kp*fb*a?;I>V7{oway7EhtkYpyVAG z$ulR(Gm_x}Uah-Q_j1+iwXf8^dElEzzJBC8?f=sCPhHa|9?o=yGkZ^6mm@rxh7*88;+Qzzc^zSWz#v-7%SB;xQCGK(dqXqEpEWXfij`Yd0% z-xA_JE3Vs(?g*5uLuX_VsOM{adzM2>OmEVprQz@D{284;OB0=izOFUhl1dBmAAp4> zgAD@X72RaxrQpTjrM8Q0*BZYToC?0Cyb*Zy=$p!0fo~lB*1&Yn(M(X&1lqISC z*MRkRO>Izn36?1+Ikde!deb1f#MfV0%7bl&c!FiOSg4_kG;AQ>gw2q*peka3`88RV z0Vd=<9Bz1EXcjikNQTRGwfjo<%LiZYc%|cwv2Tulef)bnzw?Rj-Z85joj!Ivqkwn* z5aR&abh98uet%}Ugjpy_e=Bp+<1;s!{VkS!Bj%&gfccqcmi)}s!i$V-@Mj!!x|`m$ z(Er~+9Wdjr#Rz>Q6Pa!vdM02QuxWQdRTMg0s=HWst?FyFQ?;)hc*Fhbk=gcR)5jmm zwD-@Re0c7pI&)IJE)6n1SVu76v4V>?;Q=(k>bpsB(Rq8pMX7)Tj?fZ%VaD3HeB9y^{y*-UEOzO-^;sRzw4E|X1(|P;bIYTxzwAX6RewWW<(zUjRU`g z)n7r?JtYw8hf%i}y>l~CNMjoh zM{IuuD{7$%=4bcfAm4>S$d_?3U#UQYd==Nm5QDsq z)i??)^*yXGz`J=YfhQ()lHY-bwhJnZC1i{xY!Ej{ycp%t!|$T?3I0E!-A~&? zQ0F`ShzmVCs~CP2zl4{fC7gbz<@8II(+@Xva8qX^(vTzQBB)3)8z{NqzLS3d!2ia3 z$GAMtd;cr|@~j#2-hDK_vz&Jkwm@Ekq5sb<5|TI1BGG#mGbzFjV`MSqL-v>`ZIH?s z4UO3@AmIx3Xv2(m!{x@S!7IV5ZCBb}ZhSrXN^sV@_y43lGG5FuM?RE|tT`eXqz~0u z*DZ8*Wz|I4rwV}budRZoeAUcXJ{%1Z0NR`n*vCDP`>Vk*NYTLeR|H)lUBLhCNbnTX9q>OL;Ujy3$1!nW<-`ilN79N_B~-c) zfv++NIy0mVp8++bZ2%pfWY7!$EtP&!$3CuW#&KwY=vhcVwbH#kV~JF3M5W(Cu}n0a z=$sB;faUxTTEN(g^Qi9NX^+c>WhQ z8!!A);`og}=4yVzZOd@me!}^F%vJq}^Zm@dJ?(tQ;d)9<+aYDb3r|Z=NQ<`pyeKW( z5AeKgxzi@`zU3-fmGO>W)QNoKdp^z?cq*Q@FAEO7dcwKP!Oyav=UwN|EpzY#IhXnk w)0}@InBnAQLF5C=K3ds%|NHK}eBeC}s`t set) { - p_set = RenderCore::Get().GetDescriptorPoolManager().GetAvailablePool().RequestDescriptorSet(set->GetShaderLayout(), set->GetShaderType()); + p_set = RenderCore::Get().GetDescriptorPoolManager().GetAvailablePool(set->GetShaderLayout(), set->GetShaderType()).RequestDescriptorSet(set->GetShaderLayout(), set->GetShaderType()); } virtual void Bind(std::size_t frame_index, VkCommandBuffer cmd) = 0; diff --git a/runtime/Includes/Renderer/Descriptor.h b/runtime/Includes/Renderer/Descriptor.h index 9a839da..c40b2dd 100644 --- a/runtime/Includes/Renderer/Descriptor.h +++ b/runtime/Includes/Renderer/Descriptor.h @@ -26,9 +26,9 @@ namespace mlx std::shared_ptr RequestDescriptorSet(const ShaderSetLayout& layout, ShaderType shader_type); void ReturnDescriptorSet(std::shared_ptr set); + bool CanAllocate(const ShaderSetLayout& layout, ShaderType shader_type) const; [[nodiscard]] inline VkDescriptorPool Get() const noexcept { return m_pool; } - [[nodiscard]] MLX_FORCEINLINE std::size_t GetNumberOfSetsAllocated() const noexcept { return m_allocation_count; } ~DescriptorPool() = default; @@ -36,7 +36,6 @@ namespace mlx std::vector> m_free_sets; std::vector> m_used_sets; VkDescriptorPool m_pool; - std::size_t m_allocation_count = 0; }; class DescriptorPoolManager @@ -44,7 +43,7 @@ namespace mlx public: DescriptorPoolManager() = default; - DescriptorPool& GetAvailablePool(); + DescriptorPool& GetAvailablePool(const ShaderSetLayout& layout, ShaderType shader_type); void Destroy(); ~DescriptorPoolManager() = default; diff --git a/runtime/Sources/Renderer/Descriptor.cpp b/runtime/Sources/Renderer/Descriptor.cpp index 8be61e0..763ad2c 100644 --- a/runtime/Sources/Renderer/Descriptor.cpp +++ b/runtime/Sources/Renderer/Descriptor.cpp @@ -9,7 +9,7 @@ namespace mlx { - constexpr std::size_t MAX_SETS_PER_POOL = MAX_FRAMES_IN_FLIGHT * 1024; + constexpr std::size_t MAX_SETS_PER_POOL = 1024; void TransitionImageToCorrectLayout(Image& image, VkCommandBuffer cmd) { @@ -26,19 +26,19 @@ namespace mlx { MLX_PROFILE_FUNCTION(); VkDescriptorPoolSize pool_sizes[] = { - { VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, MAX_SETS_PER_POOL }, - { VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, MAX_SETS_PER_POOL }, - { VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, MAX_SETS_PER_POOL } + { VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, MAX_FRAMES_IN_FLIGHT * MAX_SETS_PER_POOL }, + { VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, MAX_FRAMES_IN_FLIGHT * MAX_SETS_PER_POOL }, + { VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, MAX_FRAMES_IN_FLIGHT * MAX_SETS_PER_POOL } }; VkDescriptorPoolCreateInfo pool_info{}; pool_info.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO; pool_info.poolSizeCount = sizeof(pool_sizes) / sizeof(pool_sizes[0]); pool_info.pPoolSizes = pool_sizes; - pool_info.maxSets = MAX_SETS_PER_POOL; + pool_info.maxSets = MAX_FRAMES_IN_FLIGHT * MAX_SETS_PER_POOL; pool_info.flags = 0; kvfCheckVk(RenderCore::Get().vkCreateDescriptorPool(RenderCore::Get().GetDevice(), &pool_info, nullptr, &m_pool)); - m_allocation_count = 0; + DebugLog("Vulkan: created new descriptor pool"); } void DescriptorPool::Destroy() noexcept @@ -52,7 +52,6 @@ namespace mlx kvfDestroyDescriptorSetLayout(RenderCore::Get().GetDevice(), set->m_set_layout); RenderCore::Get().vkDestroyDescriptorPool(RenderCore::Get().GetDevice(), m_pool, nullptr); m_pool = VK_NULL_HANDLE; - m_allocation_count = 0; m_free_sets.clear(); m_used_sets.clear(); } @@ -103,7 +102,6 @@ namespace mlx alloc_info.pSetLayouts = &vulkan_layout; VkDescriptorSet vulkan_set; kvfCheckVk(RenderCore::Get().vkAllocateDescriptorSets(RenderCore::Get().GetDevice(), &alloc_info, &vulkan_set)); - m_allocation_count++; vulkan_sets[i] = vulkan_set; } @@ -124,12 +122,23 @@ namespace mlx m_free_sets.push_back(set); } - DescriptorPool& DescriptorPoolManager::GetAvailablePool() + bool DescriptorPool::CanAllocate(const ShaderSetLayout& layout, ShaderType shader_type) const + { + auto it = std::find_if(m_free_sets.begin(), m_free_sets.end(), [&](std::shared_ptr set) + { + return shader_type == set->GetShaderType() && layout == set->GetShaderLayout(); + }); + if(it != m_free_sets.end()) + return true; + return m_used_sets.size() + m_free_sets.size() < MAX_SETS_PER_POOL; + } + + DescriptorPool& DescriptorPoolManager::GetAvailablePool(const ShaderSetLayout& layout, ShaderType shader_type) { MLX_PROFILE_FUNCTION(); for(auto& pool : m_pools) { - if(pool->GetNumberOfSetsAllocated() < MAX_SETS_PER_POOL) + if(pool->CanAllocate(layout, shader_type)) return *pool; } m_pools.emplace_back(std::make_unique())->Init(); diff --git a/runtime/Sources/Renderer/RenderPasses/2DPass.cpp b/runtime/Sources/Renderer/RenderPasses/2DPass.cpp index c3aff3f..59893c7 100644 --- a/runtime/Sources/Renderer/RenderPasses/2DPass.cpp +++ b/runtime/Sources/Renderer/RenderPasses/2DPass.cpp @@ -52,8 +52,8 @@ namespace mlx }; EventBus::RegisterListener({ functor, "mlx_2d_render_pass_" + std::to_string(reinterpret_cast(this)) }); - p_viewer_data_set = RenderCore::Get().GetDescriptorPoolManager().GetAvailablePool().RequestDescriptorSet(p_vertex_shader->GetShaderLayout().set_layouts[0].second, ShaderType::Vertex); - p_texture_set = RenderCore::Get().GetDescriptorPoolManager().GetAvailablePool().RequestDescriptorSet(p_fragment_shader->GetShaderLayout().set_layouts[0].second, ShaderType::Fragment); + p_viewer_data_set = RenderCore::Get().GetDescriptorPoolManager().GetAvailablePool(p_vertex_shader->GetShaderLayout().set_layouts[0].second, ShaderType::Vertex).RequestDescriptorSet(p_vertex_shader->GetShaderLayout().set_layouts[0].second, ShaderType::Vertex); + p_texture_set = RenderCore::Get().GetDescriptorPoolManager().GetAvailablePool(p_fragment_shader->GetShaderLayout().set_layouts[0].second, ShaderType::Fragment).RequestDescriptorSet(p_fragment_shader->GetShaderLayout().set_layouts[0].second, ShaderType::Fragment); p_viewer_data_buffer = std::make_shared(); p_viewer_data_buffer->Init(sizeof(ViewerData), "mlx_2d_pass_viewer_data"); diff --git a/runtime/Sources/Renderer/RenderPasses/FinalPass.cpp b/runtime/Sources/Renderer/RenderPasses/FinalPass.cpp index b3e5ae8..5518f02 100644 --- a/runtime/Sources/Renderer/RenderPasses/FinalPass.cpp +++ b/runtime/Sources/Renderer/RenderPasses/FinalPass.cpp @@ -38,7 +38,7 @@ namespace mlx }; EventBus::RegisterListener({ functor, "mlx_final_pass_" + std::to_string(reinterpret_cast(this)) }); - p_set = RenderCore::Get().GetDescriptorPoolManager().GetAvailablePool().RequestDescriptorSet(p_fragment_shader->GetShaderLayout().set_layouts[0].second, ShaderType::Fragment); + p_set = RenderCore::Get().GetDescriptorPoolManager().GetAvailablePool(p_fragment_shader->GetShaderLayout().set_layouts[0].second, ShaderType::Fragment).RequestDescriptorSet(p_fragment_shader->GetShaderLayout().set_layouts[0].second, ShaderType::Fragment); } void FinalPass::Pass([[maybe_unused]] Scene& scene, Renderer& renderer, Texture& render_target, NonOwningPtr final_target)