Add notes/warnings for calculators which use dedicated GL contexts.
PiperOrigin-RevId: 563167765
This commit is contained in:
parent
e58ec2d039
commit
b40b3973fb
|
@ -40,6 +40,10 @@ enum { kAttribVertex, kAttribTexturePosition, kNumberOfAttributes };
|
||||||
// SURFACE: unique_ptr to an EglSurfaceHolder to draw to.
|
// SURFACE: unique_ptr to an EglSurfaceHolder to draw to.
|
||||||
//
|
//
|
||||||
// See GlSurfaceSinkCalculatorOptions for options.
|
// 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 {
|
class GlSurfaceSinkCalculator : public Node {
|
||||||
public:
|
public:
|
||||||
static constexpr Input<
|
static constexpr Input<
|
||||||
|
|
|
@ -27,6 +27,22 @@
|
||||||
namespace mediapipe {
|
namespace mediapipe {
|
||||||
|
|
||||||
// Convert an input image (GpuBuffer or ImageFrame) to ImageFrame.
|
// 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 {
|
class GpuBufferToImageFrameCalculator : public CalculatorBase {
|
||||||
public:
|
public:
|
||||||
GpuBufferToImageFrameCalculator() {}
|
GpuBufferToImageFrameCalculator() {}
|
||||||
|
|
|
@ -24,6 +24,11 @@
|
||||||
namespace mediapipe {
|
namespace mediapipe {
|
||||||
|
|
||||||
// Convert ImageFrame to GpuBuffer.
|
// 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 {
|
class ImageFrameToGpuBufferCalculator : public CalculatorBase {
|
||||||
public:
|
public:
|
||||||
ImageFrameToGpuBufferCalculator() {}
|
ImageFrameToGpuBufferCalculator() {}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user