Source code

Revision control

Copy as Markdown

Other Tools

//
// 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 <typename CaptureFuncT, typename... ArgsT>
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_