}
static void
-weston_compositor_use_shader(struct weston_compositor *compositor,
+use_shader(struct weston_compositor *compositor,
struct weston_shader *shader)
{
if (compositor->current_shader == shader)
}
static void
-weston_shader_uniforms(struct weston_shader *shader,
+shader_uniforms(struct weston_shader *shader,
struct weston_surface *surface,
struct weston_output *output)
{
glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
if (ec->fan_debug) {
- weston_compositor_use_shader(ec, &ec->solid_shader);
- weston_shader_uniforms(&ec->solid_shader, es, output);
+ use_shader(ec, &ec->solid_shader);
+ shader_uniforms(&ec->solid_shader, es, output);
}
- weston_compositor_use_shader(ec, es->shader);
- weston_shader_uniforms(es->shader, es, output);
+ use_shader(ec, es->shader);
+ shader_uniforms(es->shader, es, output);
if (es->transform.enabled || output->zoom.active)
filter = GL_LINEAR;
* that forces texture alpha = 1.0.
* Xwayland surfaces need this.
*/
- weston_compositor_use_shader(ec, &ec->texture_shader_rgbx);
- weston_shader_uniforms(&ec->texture_shader_rgbx, es, output);
+ use_shader(ec, &ec->texture_shader_rgbx);
+ shader_uniforms(&ec->texture_shader_rgbx, es, output);
}
if (es->alpha < 1.0)
}
if (pixman_region32_not_empty(&surface_blend)) {
- weston_compositor_use_shader(ec, es->shader);
+ use_shader(ec, es->shader);
glEnable(GL_BLEND);
repaint_region(es, &repaint, &surface_blend);
}
int n;
glDisable(GL_BLEND);
- glUseProgram(shader->program);
- ec->current_shader = shader;
+ use_shader(ec, shader);
glUniformMatrix4fv(shader->proj_uniform,
1, GL_FALSE, output->matrix.d);
}
static int
-weston_shader_init(struct weston_shader *shader, struct weston_compositor *ec,
+shader_init(struct weston_shader *shader, struct weston_compositor *ec,
const char *vertex_source, const char *fragment_source)
{
char msg[512];
}
static void
-weston_shader_release(struct weston_shader *shader)
+shader_release(struct weston_shader *shader)
{
glDeleteShader(shader->vertex_shader);
glDeleteShader(shader->fragment_shader);
static int
compile_shaders(struct weston_compositor *ec)
{
- if (weston_shader_init(&ec->texture_shader_rgba, ec,
+ if (shader_init(&ec->texture_shader_rgba, ec,
vertex_shader, texture_fragment_shader_rgba) < 0)
return -1;
- if (weston_shader_init(&ec->texture_shader_rgbx, ec,
+ if (shader_init(&ec->texture_shader_rgbx, ec,
vertex_shader, texture_fragment_shader_rgbx) < 0)
return -1;
if (ec->has_egl_image_external &&
- weston_shader_init(&ec->texture_shader_egl_external, ec,
+ shader_init(&ec->texture_shader_egl_external, ec,
vertex_shader, texture_fragment_shader_egl_external) < 0)
return -1;
- if (weston_shader_init(&ec->texture_shader_y_uv, ec,
+ if (shader_init(&ec->texture_shader_y_uv, ec,
vertex_shader, texture_fragment_shader_y_uv) < 0)
return -1;
- if (weston_shader_init(&ec->texture_shader_y_u_v, ec,
+ if (shader_init(&ec->texture_shader_y_u_v, ec,
vertex_shader, texture_fragment_shader_y_u_v) < 0)
return -1;
- if (weston_shader_init(&ec->texture_shader_y_xuxv, ec,
+ if (shader_init(&ec->texture_shader_y_xuxv, ec,
vertex_shader, texture_fragment_shader_y_xuxv) < 0)
return -1;
- if (weston_shader_init(&ec->solid_shader, ec,
+ if (shader_init(&ec->solid_shader, ec,
vertex_shader, solid_fragment_shader) < 0)
return -1;
renderer->fragment_shader_debug ^= 1;
- weston_shader_release(&ec->texture_shader_rgba);
- weston_shader_release(&ec->texture_shader_rgbx);
- weston_shader_release(&ec->texture_shader_egl_external);
- weston_shader_release(&ec->texture_shader_y_uv);
- weston_shader_release(&ec->texture_shader_y_u_v);
- weston_shader_release(&ec->texture_shader_y_xuxv);
- weston_shader_release(&ec->solid_shader);
+ shader_release(&ec->texture_shader_rgba);
+ shader_release(&ec->texture_shader_rgbx);
+ shader_release(&ec->texture_shader_egl_external);
+ shader_release(&ec->texture_shader_y_uv);
+ shader_release(&ec->texture_shader_y_u_v);
+ shader_release(&ec->texture_shader_y_xuxv);
+ shader_release(&ec->solid_shader);
compile_shaders(ec);