Add notes/warnings for calculators which use dedicated GL contexts.

PiperOrigin-RevId: 563167765
This commit is contained in:
MediaPipe Team 2023-09-06 11:37:47 -07:00 committed by Copybara-Service
parent e58ec2d039
commit b40b3973fb
3 changed files with 25 additions and 0 deletions

View File

@ -40,6 +40,10 @@ enum { kAttribVertex, kAttribTexturePosition, kNumberOfAttributes };
// SURFACE: unique_ptr to an EglSurfaceHolder to draw to.
//
// See GlSurfaceSinkCalculatorOptions for options.
//
// NOTE: all GlSurfaceSinkCalculators use a common dedicated shared GL context
// thread by default, which is different from the main GL context thread used by
// the graph. (If MediaPipe uses multithreading and multiple OpenGL contexts.)
class GlSurfaceSinkCalculator : public Node {
public:
static constexpr Input<

View File

@ -27,6 +27,22 @@
namespace mediapipe {
// Convert an input image (GpuBuffer or ImageFrame) to ImageFrame.
//
// NOTE: all GpuBufferToImageFrameCalculators use a common dedicated shared GL
// context thread by default, which is different from the main GL context thread
// used by the graph. (If MediaPipe uses multithreading and multiple OpenGL
// contexts.)
//
// IMPORTANT: graph writer must make sure input GpuBuffer backed OpenGL texture
// is not in use before the calculator starts processing and not used by any
// other code until the calculator returns:
// - pixel transfer involves attaching GpuBuffer backing texture as a logical
// buffer to a particular bound framebuffer.
// - and if texture is already bound and enabled for texturing, this may lead
// to a "feedback loop" and undefined results.
// See, OpenGL ES 3.0 Spec 4.4.3 "Feedback Loops between Textures and the
// Framebuffer"
//
class GpuBufferToImageFrameCalculator : public CalculatorBase {
public:
GpuBufferToImageFrameCalculator() {}

View File

@ -24,6 +24,11 @@
namespace mediapipe {
// Convert ImageFrame to GpuBuffer.
//
// NOTE: all ImageFrameToGpuBufferCalculators use a common dedicated shared GL
// context thread by default, which is different from the main GL context thread
// used by the graph. (If MediaPipe uses multithreading and multiple OpenGL
// contexts.)
class ImageFrameToGpuBufferCalculator : public CalculatorBase {
public:
ImageFrameToGpuBufferCalculator() {}