summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPekka Paalanen <pekka.paalanen@collabora.com>2021-03-25 14:49:57 +0200
committerPekka Paalanen <pq@iki.fi>2021-04-07 11:45:10 +0000
commit0e1ddc4759b009ceed1aeafb5b2285ada84f7bc2 (patch)
tree53ae08fab3e0f9065c29c33a9486c9c8b5347910
parent3ddcf07b4c26650cbc05a03281f365599cfa4dc9 (diff)
downloadweston-0e1ddc4759b009ceed1aeafb5b2285ada84f7bc2.tar.gz
gl-renderer: remove redundant 'target'
The texture target can be uniquely inferred from the shader variant, so do not store texture target separately. Shortens the code a bit. Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
-rw-r--r--libweston/renderer-gl/gl-renderer.c43
1 files changed, 19 insertions, 24 deletions
diff --git a/libweston/renderer-gl/gl-renderer.c b/libweston/renderer-gl/gl-renderer.c
index be5e8f6c..8e332722 100644
--- a/libweston/renderer-gl/gl-renderer.c
+++ b/libweston/renderer-gl/gl-renderer.c
@@ -132,7 +132,6 @@ struct dmabuf_image {
struct wl_list link;
enum import_type import_type;
- GLenum target;
enum gl_shader_texture_variant shader_variant;
};
@@ -182,7 +181,6 @@ struct gl_surface_state {
GLenum gl_pixel_type;
struct egl_image* images[3];
- GLenum target;
int num_images;
enum gl_shader_texture_variant shader_variant;
@@ -1864,7 +1862,7 @@ done:
}
static void
-ensure_textures(struct gl_surface_state *gs, int num_textures)
+ensure_textures(struct gl_surface_state *gs, GLenum target, int num_textures)
{
int i;
@@ -1875,14 +1873,12 @@ ensure_textures(struct gl_surface_state *gs, int num_textures)
for (i = gs->num_textures; i < num_textures; i++) {
glGenTextures(1, &gs->textures[i]);
- glBindTexture(gs->target, gs->textures[i]);
- glTexParameteri(gs->target,
- GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
- glTexParameteri(gs->target,
- GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+ glBindTexture(target, gs->textures[i]);
+ glTexParameteri(target, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+ glTexParameteri(target, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
}
gs->num_textures = num_textures;
- glBindTexture(gs->target, 0);
+ glBindTexture(target, 0);
}
static void
@@ -2015,7 +2011,6 @@ gl_renderer_attach_shm(struct weston_surface *es, struct weston_buffer *buffer,
gs->buffer_type != BUFFER_TYPE_SHM) {
gs->pitch = pitch;
gs->height = buffer->height;
- gs->target = GL_TEXTURE_2D;
gs->gl_format[0] = gl_format[0];
gs->gl_format[1] = gl_format[1];
gs->gl_format[2] = gl_format[2];
@@ -2027,7 +2022,7 @@ gl_renderer_attach_shm(struct weston_surface *es, struct weston_buffer *buffer,
gs->surface = es;
- ensure_textures(gs, num_planes);
+ ensure_textures(gs, GL_TEXTURE_2D, num_planes);
}
}
@@ -2039,6 +2034,7 @@ gl_renderer_attach_egl(struct weston_surface *es, struct weston_buffer *buffer,
struct gl_renderer *gr = get_renderer(ec);
struct gl_surface_state *gs = get_surface_state(es);
EGLint attribs[3];
+ GLenum target;
int i, num_planes;
buffer->legacy_buffer = (struct wl_buffer *)buffer->resource;
@@ -2054,7 +2050,6 @@ gl_renderer_attach_egl(struct weston_surface *es, struct weston_buffer *buffer,
gs->images[i] = NULL;
}
gs->num_images = 0;
- gs->target = GL_TEXTURE_2D;
es->is_opaque = false;
switch (format) {
case EGL_TEXTURE_RGB:
@@ -2067,7 +2062,6 @@ gl_renderer_attach_egl(struct weston_surface *es, struct weston_buffer *buffer,
break;
case EGL_TEXTURE_EXTERNAL_WL:
num_planes = 1;
- gs->target = GL_TEXTURE_EXTERNAL_OES;
gs->shader_variant = SHADER_VARIANT_EXTERNAL;
break;
case EGL_TEXTURE_Y_UV_WL:
@@ -2087,7 +2081,8 @@ gl_renderer_attach_egl(struct weston_surface *es, struct weston_buffer *buffer,
break;
}
- ensure_textures(gs, num_planes);
+ target = gl_shader_texture_variant_get_target(gs->shader_variant);
+ ensure_textures(gs, target, num_planes);
for (i = 0; i < num_planes; i++) {
attribs[0] = EGL_WAYLAND_PLANE_WL;
attribs[1] = i;
@@ -2103,9 +2098,8 @@ gl_renderer_attach_egl(struct weston_surface *es, struct weston_buffer *buffer,
gs->num_images++;
glActiveTexture(GL_TEXTURE0 + i);
- glBindTexture(gs->target, gs->textures[i]);
- gr->image_target_texture_2d(gs->target,
- gs->images[i]->image);
+ glBindTexture(target, gs->textures[i]);
+ gr->image_target_texture_2d(target, gs->images[i]->image);
}
gs->pitch = buffer->width;
@@ -2499,6 +2493,7 @@ import_dmabuf(struct gl_renderer *gr,
{
struct egl_image *egl_image;
struct dmabuf_image *image;
+ GLenum target;
image = dmabuf_image_create();
image->dmabuf = dmabuf;
@@ -2508,9 +2503,9 @@ import_dmabuf(struct gl_renderer *gr,
image->num_images = 1;
image->images[0] = egl_image;
image->import_type = IMPORT_TYPE_DIRECT;
- image->target = choose_texture_target(gr, &dmabuf->attributes);
+ target = choose_texture_target(gr, &dmabuf->attributes);
- switch (image->target) {
+ switch (target) {
case GL_TEXTURE_2D:
image->shader_variant = SHADER_VARIANT_RGBA;
break;
@@ -2523,7 +2518,6 @@ import_dmabuf(struct gl_renderer *gr,
return NULL;
}
image->import_type = IMPORT_TYPE_GL_CONVERSION;
- image->target = GL_TEXTURE_2D;
}
return image;
@@ -2713,6 +2707,7 @@ gl_renderer_attach_dmabuf(struct weston_surface *surface,
struct gl_renderer *gr = get_renderer(surface->compositor);
struct gl_surface_state *gs = get_surface_state(surface);
struct dmabuf_image *image;
+ GLenum target;
int i;
if (!gr->has_dmabuf_import) {
@@ -2771,12 +2766,12 @@ gl_renderer_attach_dmabuf(struct weston_surface *surface,
for (i = 0; i < gs->num_images; ++i)
gs->images[i] = egl_image_ref(image->images[i]);
- gs->target = image->target;
- ensure_textures(gs, gs->num_images);
+ target = gl_shader_texture_variant_get_target(image->shader_variant);
+ ensure_textures(gs, target, gs->num_images);
for (i = 0; i < gs->num_images; ++i) {
glActiveTexture(GL_TEXTURE0 + i);
- glBindTexture(gs->target, gs->textures[i]);
- gr->image_target_texture_2d(gs->target, gs->images[i]->image);
+ glBindTexture(target, gs->textures[i]);
+ gr->image_target_texture_2d(target, gs->images[i]->image);
}
gs->shader_variant = image->shader_variant;