Size: a a a

pro.graphon (and gamedev)

2020 November 17

VK

Vitaliy ◀️TriΔng3l▶️... in pro.graphon (and gamedev)
alexcher
барьеры, которые испльзуются именно как барьеры, или просто для транзишная лейаутов?)
Транзишен лейаута делать отдельно от барьера непонятно, в каких случаях может иметь смысл
источник

VK

Vitaliy ◀️TriΔng3l▶️... in pro.graphon (and gamedev)
Зависимости у субпасса — именно как барьеры
источник

VK

Vitaliy ◀️TriΔng3l▶️... in pro.graphon (and gamedev)
Например, если ты делаешь deferred shading в два субпасса
источник

a

alexcher in pro.graphon (and gamedev)
Vitaliy ◀️TriΔng3l▶️ Kuzmin
Зависимости у субпасса — именно как барьеры
не начинать один из сабпассов, пока не закончился другой?
источник

VK

Vitaliy ◀️TriΔng3l▶️... in pro.graphon (and gamedev)
alexcher
не начинать один из сабпассов, пока не закончился другой?
…И хочешь в одном субпассе записывать данные в G-буферы, которые в субпассе являются аттачментами, а в другом их читать
источник

a

alexcher in pro.graphon (and gamedev)
Vitaliy ◀️TriΔng3l▶️ Kuzmin
…И хочешь в одном субпассе записывать данные в G-буферы, которые в субпассе являются аттачментами, а в другом их читать
тогда нужен депенденс?
источник

a

alexcher in pro.graphon (and gamedev)
а если его не будет?
источник

a

alexcher in pro.graphon (and gamedev)
alexcher
а если его не будет?
второй, читающий сабпасс может читать еще неготовые данные?
источник

VK

Vitaliy ◀️TriΔng3l▶️... in pro.graphon (and gamedev)
alexcher
тогда нужен депенденс?
Да, между 0 и 1 надо сделать зависимость VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT -> VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT, VK_ACCESS_INPUT_ATTACHMENT_READ_BIT
источник

VK

Vitaliy ◀️TriΔng3l▶️... in pro.graphon (and gamedev)
А у конкретных аттачментов сделать смену layout
источник

VK

Vitaliy ◀️TriΔng3l▶️... in pro.graphon (and gamedev)
alexcher
второй, читающий сабпасс может читать еще неготовые данные?
Да, race condition, undefined behavior
источник

a

alexcher in pro.graphon (and gamedev)
Vitaliy ◀️TriΔng3l▶️ Kuzmin
Да, между 0 и 1 надо сделать зависимость VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT -> VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT, VK_ACCESS_INPUT_ATTACHMENT_READ_BIT
и это будет работать как барьер?
источник

a

alexcher in pro.graphon (and gamedev)
а зачем может быть нужен депенденс между начальным неявным сабпассом и нулевым?
источник

VK

Vitaliy ◀️TriΔng3l▶️... in pro.graphon (and gamedev)
alexcher
и это будет работать как барьер?
Да
источник

VK

Vitaliy ◀️TriΔng3l▶️... in pro.graphon (and gamedev)
alexcher
а зачем может быть нужен депенденс между начальным неявным сабпассом и нулевым?
С той же целью, что и обычные барьеры для тех текстур, которые ты используешь как аттачменты
источник

VK

Vitaliy ◀️TriΔng3l▶️... in pro.graphon (and gamedev)
Хотя, что там за неявная зависимость у субпассов, как-то не очень понятно
источник

VK

Vitaliy ◀️TriΔng3l▶️... in pro.graphon (and gamedev)
источник

VK

Vitaliy ◀️TriΔng3l▶️... in pro.graphon (and gamedev)
Implicit dependency exists in the spec only for formal reasons. Without it you would not know when the layout transition happens when used e.g. with a Semaphore. But in practice the implicit dependency is no-op. Its dst half does not cover anything.
источник

VK

Vitaliy ◀️TriΔng3l▶️... in pro.graphon (and gamedev)
То есть, если ты два субпасса запустишь без зависимостей, похоже, они как угодно будут выполняться
источник

a

alexcher in pro.graphon (and gamedev)
Vitaliy ◀️TriΔng3l▶️ Kuzmin
С той же целью, что и обычные барьеры для тех текстур, которые ты используешь как аттачменты
тогда депенденс
color attachment output, 0 ->
color attachment output, color attachment write
между external и 0 сабпассами будет ждать... чего?
источник