Можно ли использовать glFenceSyn c между потоками или границей контекста? - PullRequest
1 голос
/ 28 апреля 2020

Могу ли я создать glFenceSyn c в одном потоке и ждать его в другом потоке?

или

Могу ли я создать glFenceSyn c в одном контексте и ждать это в другом контексте?

1 Ответ

3 голосов
/ 29 апреля 2020

Могу ли я создать glFenceSync в одном потоке и ждать его в другом потоке?

Каждая функция GL, которую вы можете вызвать, требует, чтобы вы сделали текущий контекст GL для поток, который вы вызываете, и контекст GL может быть текущим не более чем одному потоку в любой момент времени.

Технически, ответ на ваш вопрос все еще "да", так как вы можете выдать glFenceSync в одном потоке, перенесите контекст в другой поток и назовите там gl[Client]WaitSync - но это, вероятно, не то, что вы имели в виду, и я также не вижу очевидного варианта использования такого шаблона.

Могу ли я создать glFenceSync в одном контексте и ждать его в другом контексте?

Syn c объекты совместно используются в GL, поэтому если вы создадите контексты, которые совместно используют объекты, они также будут совместно использовать объекты syn c, а spe c явно позволяет ожидать объекты syn c другого контекста. На самом деле, даже указано, что может быть несколько одновременных ожиданий на одном объекте syn c, и все они будут разблокированы, когда объект syn c получит сигнал (но в зависимости от реализации).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...