package Ġorg . aqu ila 3 d . core . v ulkan Ċ Ċ import Ġorg . aqu ila 3 d . core . v ulkan . device . VkDevice Ċ Ċ expect Ġclass ĠVk RenderPass ( render Pass : ĠVk RenderPass Impl ) Ġ{ Ċ Ċ } Ċ Ċ class ĠVk RenderPass Impl Ġ{ ĊĊĠĠĠ Ġval Ġdevice : ĠVk Device ĊĠĠĠ Ġval Ġflags : ĠInt ĊĠĠĠ Ġval Ġattachments : ĠList < Vk Attachment Description > ĊĠĠĠ Ġval Ġreferences : ĠList < Vk Attachment Reference > ĊĠĠĠ Ġval Ġsub passes : ĠList < Vk Sub pass Description > ĊĠĠĠ Ġval Ġsub pass Dependencies : ĠList < Vk Sub pass Dependency > ĊĊĠĠĠ Ġprivate Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġdevice : ĠVk Device , ĊĠĠĠĠĠĠĠ Ġflags : ĠInt , ĊĠĠĠĠĠĠĠ Ġattachments : ĠList < Vk Attachment Description >, ĊĠĠĠĠĠĠĠ Ġreferences : ĠList < Vk Attachment Reference >, ĊĠĠĠĠĠĠĠ Ġsub passes : ĠList < Vk Sub pass Description >, ĊĠĠĠĠĠĠĠ Ġsub pass Dependencies : ĠList < Vk Sub pass Dependency > ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . device Ġ= Ġdevice ĊĠĠĠĠĠĠĠ Ġthis . flags Ġ= Ġflags ĊĠĠĠĠĠĠĠ Ġthis . attachments Ġ= Ġattachments ĊĠĠĠĠĠĠĠ Ġthis . references Ġ= Ġreferences ĊĠĠĠĠĠĠĠ Ġthis . sub passes Ġ= Ġsub passes ĊĠĠĠĠĠĠĠ Ġthis . sub pass Dependencies Ġ= Ġsub pass Dependencies ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Vk RenderPass Dsl Marker ĊĠĠĠ Ġcompanion Ġobject ĠBuilder Ġ{ ĊĊĠĠĠĠĠĠĠ Ġvar Ġflags : ĠInt Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġattachments : ĠMutable List < Vk Attachment Description > Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠ Ġvar Ġreferences : ĠMutable List < Vk Attachment Reference > Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠ Ġvar Ġsub passes : ĠMutable List < Vk Sub pass Description > Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠ Ġvar Ġsub pass Dependencies : ĠMutable List < Vk Sub pass Dependency > Ġ= Ġmutable ListOf () ĊĊĠĠĠĠĠĠĠ Ġinline Ġfun Ġflags ( flags : Ġ() Ġ-> ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . flags Ġ= Ġflags () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġinline Ġfun Ġattachments ( attachments : Ġ() Ġ-> ĠPair < Vk Attachment Description , ĠVk Attachment Reference >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġattachment Ġ= Ġattachments () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . attachments . add ( attachment . first ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . references . add ( attachment . second ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġinline Ġfun Ġinput Attachments ( sub passes : Ġ() Ġ-> ĠVk Sub pass Description ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . sub passes . add ( sub passes ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġinline Ġfun Ġsub pass Dependencies ( sub pass Dependencies : Ġ() Ġ-> ĠVk Sub pass Dependency ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . sub pass Dependencies . add ( sub pass Dependencies ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġbuild ( device : ĠVk Device ): ĠVk RenderPass Impl Ġ= ĠVk RenderPass Impl ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdevice , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġflags , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġattachments , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreferences , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsub passes , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsub pass Dependencies ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġoperator Ġfun Ġinvoke (): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġrender Pass ( device : ĠVk Device , Ġlambda : ĠVk RenderPass Impl . Builder . () Ġ-> ĠUnit ) Ġ= ĠVk RenderPass Impl . Builder () ĊĠĠĠ Ġ. apply ( lambda ) ĊĠĠĠ Ġ. build ( device ) Ċ Ċ @ Dsl Marker Ċ annotation Ġclass ĠVk RenderPass Dsl Marker Ċ