// // Copyright 2022 The ANGLE Project Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // // capture_egl.h: // EGL capture functions // #ifndef LIBANGLE_CAPTURE_EGL_H_ #define LIBANGLE_CAPTURE_EGL_H_ #include "libANGLE/Context.h" #include "libANGLE/Thread.h" #include "libANGLE/capture/FrameCapture.h" namespace gl { enum class GLenumGroup; } namespace egl { template void CaptureCallToCaptureEGL(CaptureFuncT captureFunc, egl::Thread *thread, ArgsT... captureParams) { gl::Context *context = thread->getContext(); if (!context) { return; } angle::FrameCaptureShared *frameCaptureShared = context->getShareGroup()->getFrameCaptureShared(); if (!frameCaptureShared->isCapturing()) { return; } angle::CallCapture call = captureFunc(captureParams...); frameCaptureShared->captureCall(context, std::move(call), true); } angle::CallCapture CaptureCreateNativeClientBufferANDROID(const egl::AttributeMap &attribMap, EGLClientBuffer eglClientBuffer); angle::CallCapture CaptureEGLCreateImage(const gl::Context *context, EGLenum target, EGLClientBuffer buffer, const egl::AttributeMap &attributes, egl::Image *image); angle::CallCapture CaptureEGLDestroyImage(egl::Display *display, egl::Image *image); angle::CallCapture CaptureEGLCreatePbufferSurface(const AttributeMap &attrib_list, egl::Surface *surface); angle::CallCapture CaptureEGLDestroySurface(Display *display, Surface *surface); angle::CallCapture CaptureEGLBindTexImage(egl::Surface *surface, EGLint buffer); angle::CallCapture CaptureEGLReleaseTexImage(egl::Surface *surface, EGLint buffer); angle::CallCapture CaptureEGLMakeCurrent(Surface *drawSurface, Surface *readSurface, gl::Context *context); } // namespace egl #endif // LIBANGLE_FRAME_CAPTURE_H_