render: Add damage checking shader program
parent
a62a9c43fc
commit
36eb48d0ca
|
@ -312,6 +312,7 @@ void renderer_destroy(struct renderer* self)
|
||||||
|
|
||||||
glDeleteProgram(self->dmabuf_shader_program);
|
glDeleteProgram(self->dmabuf_shader_program);
|
||||||
glDeleteProgram(self->texture_shader_program);
|
glDeleteProgram(self->texture_shader_program);
|
||||||
|
glDeleteProgram(self->damage_shader_program);
|
||||||
eglMakeCurrent(self->display, EGL_NO_SURFACE, EGL_NO_SURFACE,
|
eglMakeCurrent(self->display, EGL_NO_SURFACE, EGL_NO_SURFACE,
|
||||||
EGL_NO_CONTEXT);
|
EGL_NO_CONTEXT);
|
||||||
eglDestroySurface(self->display, self->surface);
|
eglDestroySurface(self->display, self->surface);
|
||||||
|
@ -396,6 +397,11 @@ int renderer_init(struct renderer* self, uint32_t width, uint32_t height)
|
||||||
"shaders/texture-fragment.glsl") < 0)
|
"shaders/texture-fragment.glsl") < 0)
|
||||||
goto shader_failure;
|
goto shader_failure;
|
||||||
|
|
||||||
|
if (gl_compile_shader_program(&self->damage_shader_program,
|
||||||
|
"shaders/texture-damage-vertex.glsl",
|
||||||
|
"shaders/texture-damage-fragment.glsl") < 0)
|
||||||
|
goto shader_failure;
|
||||||
|
|
||||||
self->width = width;
|
self->width = width;
|
||||||
self->height = height;
|
self->height = height;
|
||||||
glGetIntegerv(GL_IMPLEMENTATION_COLOR_READ_FORMAT, &self->read_format);
|
glGetIntegerv(GL_IMPLEMENTATION_COLOR_READ_FORMAT, &self->read_format);
|
||||||
|
@ -554,7 +560,7 @@ void render_check_damage(struct renderer* self, GLenum target, GLuint tex)
|
||||||
|
|
||||||
for (int y = 0; y < height; ++y)
|
for (int y = 0; y < height; ++y)
|
||||||
for (int x = 0; x < width; ++x)
|
for (int x = 0; x < width; ++x)
|
||||||
if (buffer[y * width + x])
|
if (buffer[y * width + x] & 0xff00)
|
||||||
pixman_region_union_rect(damage, damage,
|
pixman_region_union_rect(damage, damage,
|
||||||
x * 32, y * 32,
|
x * 32, y * 32,
|
||||||
32, 32);
|
32, 32);
|
||||||
|
|
Loading…
Reference in New Issue