mirror of
https://github.com/hyprwm/wlroots-hyprland.git
synced 2024-11-25 22:25:58 +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_rgbx_frag_src.h"
|
||||||
#include "tex_external_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_renderer_impl renderer_impl;
|
||||||
static const struct wlr_render_timer_impl render_timer_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
|
// 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(
|
static const uint32_t *gles2_get_shm_texture_formats(
|
||||||
struct wlr_renderer *wlr_renderer, size_t *len) {
|
struct wlr_renderer *wlr_renderer, size_t *len) {
|
||||||
struct wlr_gles2_renderer *renderer = gles2_get_renderer(wlr_renderer);
|
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,
|
.bind_buffer = gles2_bind_buffer,
|
||||||
.begin = gles2_begin,
|
.begin = gles2_begin,
|
||||||
.end = gles2_end,
|
.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_shm_texture_formats = gles2_get_shm_texture_formats,
|
||||||
.get_dmabuf_texture_formats = gles2_get_dmabuf_texture_formats,
|
.get_dmabuf_texture_formats = gles2_get_dmabuf_texture_formats,
|
||||||
.get_render_formats = gles2_get_render_formats,
|
.get_render_formats = gles2_get_render_formats,
|
||||||
|
|
Loading…
Reference in a new issue