Разница между GL_SYNC_FLUSH_COMMANDS_BIT и glFlush в мультиконтекстном / многопоточном сценарии - PullRequest
0 голосов
/ 19 сентября 2019

У меня есть многопоточный сценарий с приоритетным контекстом OpenGL для рендеринга и фоновым контекстом OpenGL для загрузки с активированным разделением ресурсов контекста.После того, как фоновый поток выпустил glBufferData, он создает забор с glFenceSync и затем вызывает glClientWaitSync с установленным GL_SYNC_FLUSH_COMMANDS_BIT.Тем не менее, это, кажется, не гарантирует сброса, так как основная нить ждет вечно, пока забор не будет сигнализирован.Только замена glClientWaitSync на glFlush сделает эту работу.

Может кто-нибудь сказать мне, почему?

C ++, Linux, GLES 3.2

С уважением

1 Ответ

0 голосов
/ 20 сентября 2019

Может кто-нибудь сказать мне, почему?

Наиболее вероятный ответ: глючит драйвер.Согласно спецификации GL_SYNC_FLUSH_COMMANDS_BIT должно быть эквивалентно вставке glFlush(), так что если это не так, это звучит как проблема реализации.

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