Size: a a a

pro.graphon (and gamedev)

2020 November 17

VK

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

a

alexcher in pro.graphon (and gamedev)
Vitaliy ◀️TriΔng3l▶️ Kuzmin
> когда все нужные инпут аттачменты дойдут до указанной стадии
Перед тем, как dst stages смогут делать dst access к указанным ресурсам (в данном случае к аттачментам), src stages должны доделать src access к ним
то есть где-то хранится, кто сейчас рисует в эти аттачменты? чтобы проверять, выполнились src stages или нет
источник

a

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

VK

Vitaliy ◀️TriΔng3l▶️... in pro.graphon (and gamedev)
alexcher
то есть где-то хранится, кто сейчас рисует в эти аттачменты? чтобы проверять, выполнились src stages или нет
Нет — по завершении src stages стадии GPU сбрасывает кэши, которые нужно сбросить, для ресурса, и где-то в памяти, выделяемой драйвером, ставит флажок, и этот флажок уже ждут dst stages
источник

a

alexcher in pro.graphon (and gamedev)
Vitaliy ◀️TriΔng3l▶️ Kuzmin
Нет — по завершении src stages стадии GPU сбрасывает кэши, которые нужно сбросить, для ресурса, и где-то в памяти, выделяемой драйвером, ставит флажок, и этот флажок уже ждут dst stages
ставит флажок где-то внутри аттачмента?
источник

a

alexcher in pro.graphon (and gamedev)
а кто и когда снимает этот флажок?
источник

VK

Vitaliy ◀️TriΔng3l▶️... in pro.graphon (and gamedev)
alexcher
ставит флажок где-то внутри аттачмента?
Ты путаешь execution dependency и memory dependency немножко
источник

VK

Vitaliy ◀️TriΔng3l▶️... in pro.graphon (and gamedev)
alexcher
а кто и когда снимает этот флажок?
Никто не снимает, это просто событие в буфере команд
источник

VK

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

a

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

VK

Vitaliy ◀️TriΔng3l▶️... in pro.graphon (and gamedev)
alexcher
событие "для такого-то ресурса выполнилась такая-то стадия"?
"Для такого-то ресурса" — это cache flush
источник

VK

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

a

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

a

alexcher in pro.graphon (and gamedev)
Vitaliy ◀️TriΔng3l▶️ Kuzmin
Это memory dependency
а, окей
источник

VK

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

a

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

a

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

VK

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

VK

Vitaliy ◀️TriΔng3l▶️... in pro.graphon (and gamedev)
Это почти как одноразовый VkEvent получается
источник

a

alexcher in pro.graphon (and gamedev)
стоп, завершение src stages - это завершение стадии во всех вызовах отрисовки? (vkDrawIndexed и подобные)
источник