summaryrefslogtreecommitdiff
path: root/libweston/renderer-gl/gl-renderer-internal.h
diff options
context:
space:
mode:
Diffstat (limited to 'libweston/renderer-gl/gl-renderer-internal.h')
-rw-r--r--libweston/renderer-gl/gl-renderer-internal.h31
1 files changed, 16 insertions, 15 deletions
diff --git a/libweston/renderer-gl/gl-renderer-internal.h b/libweston/renderer-gl/gl-renderer-internal.h
index 379bafa8..06904d5f 100644
--- a/libweston/renderer-gl/gl-renderer-internal.h
+++ b/libweston/renderer-gl/gl-renderer-internal.h
@@ -74,16 +74,17 @@ static_assert(sizeof(struct gl_shader_requirements) ==
4 /* total bitfield size in bytes */,
"struct gl_shader_requirements must not contain implicit padding");
-struct gl_shader {
- struct gl_shader_requirements key;
- GLuint program;
- GLuint vertex_shader, fragment_shader;
- GLint proj_uniform;
- GLint tex_uniforms[3];
- GLint alpha_uniform;
- GLint color_uniform;
- struct wl_list link; /* gl_renderer::shader_list */
- struct timespec last_used;
+struct gl_shader;
+
+#define GL_SHADER_INPUT_TEX_MAX 3
+struct gl_shader_config {
+ struct gl_shader_requirements req;
+
+ struct weston_matrix projection;
+ float view_alpha;
+ GLfloat unicolor[4];
+ GLint input_tex_filter; /* GL_NEAREST or GL_LINEAR */
+ GLuint input_tex[GL_SHADER_INPUT_TEX_MAX];
};
struct gl_renderer {
@@ -198,6 +199,9 @@ gl_renderer_setup_egl_client_extensions(struct gl_renderer *gr);
int
gl_renderer_setup_egl_extensions(struct weston_compositor *ec);
+GLenum
+gl_shader_texture_variant_get_target(enum gl_shader_texture_variant v);
+
void
gl_shader_destroy(struct gl_renderer *gr, struct gl_shader *shader);
@@ -211,11 +215,8 @@ void
gl_renderer_garbage_collect_programs(struct gl_renderer *gr);
bool
-gl_renderer_use_program(struct gl_renderer *gr, struct gl_shader **shaderp);
-
-struct gl_shader *
-gl_renderer_get_program(struct gl_renderer *gr,
- const struct gl_shader_requirements *requirements);
+gl_renderer_use_program(struct gl_renderer *gr,
+ const struct gl_shader_config *sconf);
struct weston_log_scope *
gl_shader_scope_create(struct gl_renderer *gr);