diff options
author | Gerd Hoffmann <kraxel@redhat.com> | 2017-10-10 15:54:49 +0200 |
---|---|---|
committer | Gerd Hoffmann <kraxel@redhat.com> | 2017-10-17 10:25:42 +0200 |
commit | 46e19e149f3b129a22c440caba853188df67deab (patch) | |
tree | 4c3b53e551e8f69b3762f5961551594ca72ee9d7 /ui/shader.c | |
parent | 4133fa711f37f0db303bf5aac03ea31b5be6ac1d (diff) |
opengl: move shader init from console-gl.c to shader.c
With the upcoming dmabuf support in qemu there will be more users of the
shaders than just console-gl.c. So rename ConsoleGLState to
QemuGLShader, rename some functions too, move code from console-gl.c to
shaders.c.
No functional change.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Message-id: 20171010135453.6704-3-kraxel@redhat.com
Diffstat (limited to 'ui/shader.c')
-rw-r--r-- | ui/shader.c | 51 |
1 files changed, 42 insertions, 9 deletions
diff --git a/ui/shader.c b/ui/shader.c index 1ffddbef3b..d36e7af232 100644 --- a/ui/shader.c +++ b/ui/shader.c @@ -28,9 +28,17 @@ #include "qemu-common.h" #include "ui/shader.h" +#include "shader/texture-blit-vert.h" +#include "shader/texture-blit-frag.h" + +struct QemuGLShader { + GLint texture_blit_prog; + GLint texture_blit_vao; +}; + /* ---------------------------------------------------------------------- */ -GLuint qemu_gl_init_texture_blit(GLint texture_blit_prog) +static GLuint qemu_gl_init_texture_blit(GLint texture_blit_prog) { static const GLfloat in_position[] = { -1, -1, @@ -60,17 +68,16 @@ GLuint qemu_gl_init_texture_blit(GLint texture_blit_prog) return vao; } -void qemu_gl_run_texture_blit(GLint texture_blit_prog, - GLint texture_blit_vao) +void qemu_gl_run_texture_blit(QemuGLShader *gls) { - glUseProgram(texture_blit_prog); - glBindVertexArray(texture_blit_vao); + glUseProgram(gls->texture_blit_prog); + glBindVertexArray(gls->texture_blit_vao); glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); } /* ---------------------------------------------------------------------- */ -GLuint qemu_gl_create_compile_shader(GLenum type, const GLchar *src) +static GLuint qemu_gl_create_compile_shader(GLenum type, const GLchar *src) { GLuint shader; GLint status, length; @@ -94,7 +101,7 @@ GLuint qemu_gl_create_compile_shader(GLenum type, const GLchar *src) return shader; } -GLuint qemu_gl_create_link_program(GLuint vert, GLuint frag) +static GLuint qemu_gl_create_link_program(GLuint vert, GLuint frag) { GLuint program; GLint status, length; @@ -117,8 +124,8 @@ GLuint qemu_gl_create_link_program(GLuint vert, GLuint frag) return program; } -GLuint qemu_gl_create_compile_link_program(const GLchar *vert_src, - const GLchar *frag_src) +static GLuint qemu_gl_create_compile_link_program(const GLchar *vert_src, + const GLchar *frag_src) { GLuint vert_shader, frag_shader, program; @@ -134,3 +141,29 @@ GLuint qemu_gl_create_compile_link_program(const GLchar *vert_src, return program; } + +/* ---------------------------------------------------------------------- */ + +QemuGLShader *qemu_gl_init_shader(void) +{ + QemuGLShader *gls = g_new0(QemuGLShader, 1); + + gls->texture_blit_prog = qemu_gl_create_compile_link_program + (texture_blit_vert_src, texture_blit_frag_src); + if (!gls->texture_blit_prog) { + exit(1); + } + + gls->texture_blit_vao = + qemu_gl_init_texture_blit(gls->texture_blit_prog); + + return gls; +} + +void qemu_gl_fini_shader(QemuGLShader *gls) +{ + if (!gls) { + return; + } + g_free(gls); +} |