Когда поток взаимодействия CUDA / OpenGL безопасен? - PullRequest
2 голосов
/ 28 февраля 2020

У меня есть два потока:

1) первый создает данные для отображения (с CUDA) и загружает их в текстуру OpenGL с помощью:

cudaGraphicsMapResources(TEX)
// Copy data to TEX
cudaGraphicsUnmapResources(TEX)

2) второй использует данные и др aws текстурированный прямоугольник

glBindTexture(TEX)
// glBegin() ... glEnd()
glBindTexture(0)

Безопасно ли это делать без какой-либо блокировки?


cudaGraphicsMapResources() документация говорит, что это будет на одном убедитесь, что он синхронизирован, но, с другой стороны, любые вызовы OpenGL при отображении ресурса приводят к неопределенному поведению.

Цитирование Документация по совместимости графики CUDA :

  • This function provides the synchronization guarantee that any graphics calls issued before cudaGraphicsMapResources() will complete before any subsequent CUDA work issued in stream begins.

    • Итак, в момент вызова cudaGraphicsMapResources () будет ожидать всех ожидающих операций OpenGL? Но будут ли они заблокированы, пока cudaGraphicsUnmapResources ()?
  • The graphics API from which resources were registered should not access any resources while they are mapped by CUDA.

    • Поэтому, если я позвоню, попробуйте нарисовать промежуточную карту / unmap я в беде?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...