qemu/include/ui/egl-helpers.h
<<
>>
Prefs
   1#ifndef EGL_HELPERS_H
   2#define EGL_HELPERS_H
   3
   4#include <epoxy/gl.h>
   5#include <epoxy/egl.h>
   6#include <gbm.h>
   7
   8extern EGLDisplay *qemu_egl_display;
   9extern EGLConfig qemu_egl_config;
  10extern DisplayGLMode qemu_egl_mode;
  11
  12typedef struct egl_fb {
  13    int width;
  14    int height;
  15    GLuint texture;
  16    GLuint framebuffer;
  17    bool delete_texture;
  18} egl_fb;
  19
  20void egl_fb_destroy(egl_fb *fb);
  21void egl_fb_setup_default(egl_fb *fb, int width, int height);
  22void egl_fb_setup_for_tex(egl_fb *fb, int width, int height,
  23                          GLuint texture, bool delete);
  24void egl_fb_setup_new_tex(egl_fb *fb, int width, int height);
  25void egl_fb_blit(egl_fb *dst, egl_fb *src, bool flip);
  26void egl_fb_read(void *dst, egl_fb *src);
  27
  28void egl_texture_blit(QemuGLShader *gls, egl_fb *dst, egl_fb *src, bool flip);
  29void egl_texture_blend(QemuGLShader *gls, egl_fb *dst, egl_fb *src, bool flip,
  30                       int x, int y, double scale_x, double scale_y);
  31
  32#ifdef CONFIG_OPENGL_DMABUF
  33
  34extern int qemu_egl_rn_fd;
  35extern struct gbm_device *qemu_egl_rn_gbm_dev;
  36extern EGLContext qemu_egl_rn_ctx;
  37
  38int egl_rendernode_init(const char *rendernode, DisplayGLMode mode);
  39int egl_get_fd_for_texture(uint32_t tex_id, EGLint *stride, EGLint *fourcc,
  40                           EGLuint64KHR *modifier);
  41
  42void egl_dmabuf_import_texture(QemuDmaBuf *dmabuf);
  43void egl_dmabuf_release_texture(QemuDmaBuf *dmabuf);
  44
  45#endif
  46
  47EGLSurface qemu_egl_init_surface_x11(EGLContext ectx, EGLNativeWindowType win);
  48
  49int qemu_egl_init_dpy_x11(EGLNativeDisplayType dpy, DisplayGLMode mode);
  50int qemu_egl_init_dpy_mesa(EGLNativeDisplayType dpy, DisplayGLMode mode);
  51EGLContext qemu_egl_init_ctx(void);
  52
  53#endif /* EGL_HELPERS_H */
  54