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