mirror of
https://github.com/hyprwm/wlroots-hyprland.git
synced 2024-12-22 09:59:48 +01:00
render/gles2: drop legacy rendering API
This commit is contained in:
parent
0c83c331ca
commit
4635717d82
1 changed files with 0 additions and 144 deletions
|
@ -28,13 +28,6 @@
|
|||
#include "tex_rgbx_frag_src.h"
|
||||
#include "tex_external_frag_src.h"
|
||||
|
||||
static const GLfloat verts[] = {
|
||||
1, 0, // top right
|
||||
0, 0, // top left
|
||||
1, 1, // bottom right
|
||||
0, 1, // bottom left
|
||||
};
|
||||
|
||||
static const struct wlr_renderer_impl renderer_impl;
|
||||
static const struct wlr_render_timer_impl render_timer_impl;
|
||||
|
||||
|
@ -258,139 +251,6 @@ static void gles2_end(struct wlr_renderer *wlr_renderer) {
|
|||
// no-op
|
||||
}
|
||||
|
||||
static void gles2_clear(struct wlr_renderer *wlr_renderer,
|
||||
const float color[static 4]) {
|
||||
struct wlr_gles2_renderer *renderer =
|
||||
gles2_get_renderer_in_context(wlr_renderer);
|
||||
|
||||
push_gles2_debug(renderer);
|
||||
glClearColor(color[0], color[1], color[2], color[3]);
|
||||
glClear(GL_COLOR_BUFFER_BIT);
|
||||
pop_gles2_debug(renderer);
|
||||
}
|
||||
|
||||
static void gles2_scissor(struct wlr_renderer *wlr_renderer,
|
||||
struct wlr_box *box) {
|
||||
struct wlr_gles2_renderer *renderer =
|
||||
gles2_get_renderer_in_context(wlr_renderer);
|
||||
|
||||
push_gles2_debug(renderer);
|
||||
if (box != NULL) {
|
||||
glScissor(box->x, box->y, box->width, box->height);
|
||||
glEnable(GL_SCISSOR_TEST);
|
||||
} else {
|
||||
glDisable(GL_SCISSOR_TEST);
|
||||
}
|
||||
pop_gles2_debug(renderer);
|
||||
}
|
||||
|
||||
static bool gles2_render_subtexture_with_matrix(
|
||||
struct wlr_renderer *wlr_renderer, struct wlr_texture *wlr_texture,
|
||||
const struct wlr_fbox *box, const float matrix[static 9],
|
||||
float alpha) {
|
||||
struct wlr_gles2_renderer *renderer =
|
||||
gles2_get_renderer_in_context(wlr_renderer);
|
||||
struct wlr_gles2_texture *texture =
|
||||
gles2_get_texture(wlr_texture);
|
||||
assert(texture->renderer == renderer);
|
||||
|
||||
struct wlr_gles2_tex_shader *shader = NULL;
|
||||
|
||||
switch (texture->target) {
|
||||
case GL_TEXTURE_2D:
|
||||
if (texture->has_alpha) {
|
||||
shader = &renderer->shaders.tex_rgba;
|
||||
} else {
|
||||
shader = &renderer->shaders.tex_rgbx;
|
||||
}
|
||||
break;
|
||||
case GL_TEXTURE_EXTERNAL_OES:
|
||||
// EGL_EXT_image_dma_buf_import_modifiers requires
|
||||
// GL_OES_EGL_image_external
|
||||
assert(renderer->exts.OES_egl_image_external);
|
||||
shader = &renderer->shaders.tex_ext;
|
||||
break;
|
||||
default:
|
||||
abort();
|
||||
}
|
||||
|
||||
float gl_matrix[9];
|
||||
wlr_matrix_multiply(gl_matrix, renderer->projection, matrix);
|
||||
|
||||
push_gles2_debug(renderer);
|
||||
|
||||
if (!texture->has_alpha && alpha == 1.0) {
|
||||
glDisable(GL_BLEND);
|
||||
} else {
|
||||
glEnable(GL_BLEND);
|
||||
}
|
||||
|
||||
glActiveTexture(GL_TEXTURE0);
|
||||
glBindTexture(texture->target, texture->tex);
|
||||
|
||||
glTexParameteri(texture->target, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
||||
|
||||
glUseProgram(shader->program);
|
||||
|
||||
glUniformMatrix3fv(shader->proj, 1, GL_FALSE, gl_matrix);
|
||||
glUniform1i(shader->tex, 0);
|
||||
glUniform1f(shader->alpha, alpha);
|
||||
|
||||
float tex_matrix[9];
|
||||
wlr_matrix_identity(tex_matrix);
|
||||
wlr_matrix_translate(tex_matrix, box->x / texture->wlr_texture.width,
|
||||
box->y / texture->wlr_texture.height);
|
||||
wlr_matrix_scale(tex_matrix, box->width / texture->wlr_texture.width,
|
||||
box->height / texture->wlr_texture.height);
|
||||
glUniformMatrix3fv(shader->tex_proj, 1, GL_FALSE, tex_matrix);
|
||||
|
||||
glVertexAttribPointer(shader->pos_attrib, 2, GL_FLOAT, GL_FALSE, 0, verts);
|
||||
|
||||
glEnableVertexAttribArray(shader->pos_attrib);
|
||||
|
||||
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
|
||||
|
||||
glDisableVertexAttribArray(shader->pos_attrib);
|
||||
|
||||
glBindTexture(texture->target, 0);
|
||||
|
||||
pop_gles2_debug(renderer);
|
||||
return true;
|
||||
}
|
||||
|
||||
static void gles2_render_quad_with_matrix(struct wlr_renderer *wlr_renderer,
|
||||
const float color[static 4], const float matrix[static 9]) {
|
||||
struct wlr_gles2_renderer *renderer =
|
||||
gles2_get_renderer_in_context(wlr_renderer);
|
||||
|
||||
float gl_matrix[9];
|
||||
wlr_matrix_multiply(gl_matrix, renderer->projection, matrix);
|
||||
|
||||
push_gles2_debug(renderer);
|
||||
|
||||
if (color[3] == 1.0) {
|
||||
glDisable(GL_BLEND);
|
||||
} else {
|
||||
glEnable(GL_BLEND);
|
||||
}
|
||||
|
||||
glUseProgram(renderer->shaders.quad.program);
|
||||
|
||||
glUniformMatrix3fv(renderer->shaders.quad.proj, 1, GL_FALSE, gl_matrix);
|
||||
glUniform4f(renderer->shaders.quad.color, color[0], color[1], color[2], color[3]);
|
||||
|
||||
glVertexAttribPointer(renderer->shaders.quad.pos_attrib, 2, GL_FLOAT, GL_FALSE,
|
||||
0, verts);
|
||||
|
||||
glEnableVertexAttribArray(renderer->shaders.quad.pos_attrib);
|
||||
|
||||
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
|
||||
|
||||
glDisableVertexAttribArray(renderer->shaders.quad.pos_attrib);
|
||||
|
||||
pop_gles2_debug(renderer);
|
||||
}
|
||||
|
||||
static const uint32_t *gles2_get_shm_texture_formats(
|
||||
struct wlr_renderer *wlr_renderer, size_t *len) {
|
||||
struct wlr_gles2_renderer *renderer = gles2_get_renderer(wlr_renderer);
|
||||
|
@ -651,10 +511,6 @@ static const struct wlr_renderer_impl renderer_impl = {
|
|||
.bind_buffer = gles2_bind_buffer,
|
||||
.begin = gles2_begin,
|
||||
.end = gles2_end,
|
||||
.clear = gles2_clear,
|
||||
.scissor = gles2_scissor,
|
||||
.render_subtexture_with_matrix = gles2_render_subtexture_with_matrix,
|
||||
.render_quad_with_matrix = gles2_render_quad_with_matrix,
|
||||
.get_shm_texture_formats = gles2_get_shm_texture_formats,
|
||||
.get_dmabuf_texture_formats = gles2_get_dmabuf_texture_formats,
|
||||
.get_render_formats = gles2_get_render_formats,
|
||||
|
|
Loading…
Reference in a new issue