egl-helpers: add egl_texture_blit and egl_texture_blend
egl_texture_blit() blits a texture, simliar to egl_fb_blit() but by rendering the texture to the screen instead of using a framebuffer blit. egl_texture_blend() renders a texture with alpha blending, will be used to render the cursor to the screen. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> Message-id: 20171010135453.6704-6-kraxel@redhat.com
This commit is contained in:
parent
86c0522c63
commit
0eb50c2737
@ -24,6 +24,10 @@ void egl_fb_setup_new_tex(egl_fb *fb, int width, int height);
|
||||
void egl_fb_blit(egl_fb *dst, egl_fb *src, bool flip);
|
||||
void egl_fb_read(void *dst, egl_fb *src);
|
||||
|
||||
void egl_texture_blit(QemuGLShader *gls, egl_fb *dst, egl_fb *src, bool flip);
|
||||
void egl_texture_blend(QemuGLShader *gls, egl_fb *dst, egl_fb *src, bool flip,
|
||||
int x, int y);
|
||||
|
||||
#ifdef CONFIG_OPENGL_DMABUF
|
||||
|
||||
extern int qemu_egl_rn_fd;
|
||||
|
@ -111,6 +111,33 @@ void egl_fb_read(void *dst, egl_fb *src)
|
||||
GL_BGRA, GL_UNSIGNED_BYTE, dst);
|
||||
}
|
||||
|
||||
void egl_texture_blit(QemuGLShader *gls, egl_fb *dst, egl_fb *src, bool flip)
|
||||
{
|
||||
glBindFramebuffer(GL_FRAMEBUFFER_EXT, dst->framebuffer);
|
||||
glViewport(0, 0, dst->width, dst->height);
|
||||
glEnable(GL_TEXTURE_2D);
|
||||
glBindTexture(GL_TEXTURE_2D, src->texture);
|
||||
qemu_gl_run_texture_blit(gls, flip);
|
||||
}
|
||||
|
||||
void egl_texture_blend(QemuGLShader *gls, egl_fb *dst, egl_fb *src, bool flip,
|
||||
int x, int y)
|
||||
{
|
||||
glBindFramebuffer(GL_FRAMEBUFFER_EXT, dst->framebuffer);
|
||||
if (flip) {
|
||||
glViewport(x, y, src->width, src->height);
|
||||
} else {
|
||||
glViewport(x, dst->height - src->height - y,
|
||||
src->width, src->height);
|
||||
}
|
||||
glEnable(GL_TEXTURE_2D);
|
||||
glBindTexture(GL_TEXTURE_2D, src->texture);
|
||||
glEnable(GL_BLEND);
|
||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||
qemu_gl_run_texture_blit(gls, flip);
|
||||
glDisable(GL_BLEND);
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
#ifdef CONFIG_OPENGL_DMABUF
|
||||
|
Loading…
Reference in New Issue
Block a user