Adds warning about using Tensors::OpenGlBufferViews with multiple GlContexts.
PiperOrigin-RevId: 592924315
This commit is contained in:
parent
cfb4465c38
commit
8609e5fae5
|
@ -342,6 +342,14 @@ Tensor::OpenGlBufferView Tensor::GetOpenGlBufferReadView() const {
|
||||||
<< "Tensor conversion between different GPU backing formats is not "
|
<< "Tensor conversion between different GPU backing formats is not "
|
||||||
"supported yet.";
|
"supported yet.";
|
||||||
auto lock(absl::make_unique<absl::MutexLock>(&view_mutex_));
|
auto lock(absl::make_unique<absl::MutexLock>(&view_mutex_));
|
||||||
|
if ((valid_ & kValidOpenGlBuffer) && gl_context_ != nullptr &&
|
||||||
|
!gl_context_->IsCurrent() && GlContext::IsAnyContextCurrent()) {
|
||||||
|
ABSL_LOG_FIRST_N(WARNING, 1)
|
||||||
|
<< "Tensor::GetOpenGlBufferReadView is not executed on the same GL "
|
||||||
|
"context where GL buffer was created. Note that Tensor has "
|
||||||
|
"limited synchronization support when sharing OpenGl objects "
|
||||||
|
"between multiple OpenGL contexts.";
|
||||||
|
}
|
||||||
AllocateOpenGlBuffer();
|
AllocateOpenGlBuffer();
|
||||||
if (!(valid_ & kValidOpenGlBuffer)) {
|
if (!(valid_ & kValidOpenGlBuffer)) {
|
||||||
// If the call succeeds then AHWB -> SSBO are synchronized so any usage of
|
// If the call succeeds then AHWB -> SSBO are synchronized so any usage of
|
||||||
|
@ -376,6 +384,14 @@ Tensor::OpenGlBufferView Tensor::GetOpenGlBufferWriteView(
|
||||||
uint64_t source_location_hash) const {
|
uint64_t source_location_hash) const {
|
||||||
auto lock(absl::make_unique<absl::MutexLock>(&view_mutex_));
|
auto lock(absl::make_unique<absl::MutexLock>(&view_mutex_));
|
||||||
TrackAhwbUsage(source_location_hash);
|
TrackAhwbUsage(source_location_hash);
|
||||||
|
if ((valid_ & kValidOpenGlBuffer) && gl_context_ != nullptr &&
|
||||||
|
!gl_context_->IsCurrent() && GlContext::IsAnyContextCurrent()) {
|
||||||
|
ABSL_LOG_FIRST_N(WARNING, 1)
|
||||||
|
<< "Tensor::GetOpenGlBufferWriteView is not executed on the same GL "
|
||||||
|
"context where GL buffer was created. Note that Tensor has "
|
||||||
|
"limited synchronization support when sharing OpenGl objects "
|
||||||
|
"between multiple OpenGL contexts.";
|
||||||
|
}
|
||||||
AllocateOpenGlBuffer();
|
AllocateOpenGlBuffer();
|
||||||
valid_ = kValidOpenGlBuffer;
|
valid_ = kValidOpenGlBuffer;
|
||||||
return {opengl_buffer_, std::move(lock), nullptr};
|
return {opengl_buffer_, std::move(lock), nullptr};
|
||||||
|
|
Loading…
Reference in New Issue
Block a user