[gtk+/wip/gl-texture] glarea: Always use textures
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/wip/gl-texture] glarea: Always use textures
- Date: Wed, 17 Jan 2018 14:23:00 +0000 (UTC)
commit a066674e8b79249cbdd46809a4c2d21dc2de544b
Author: Matthias Clasen <mclasen redhat com>
Date: Wed Jan 17 09:17:08 2018 -0500
glarea: Always use textures
Drop code that was only necessary for drawing
to a frame buffer. With gsk, we always want to
get the result as a texture.
With this commit, the has-alpha property no longer
has any effect.
gtk/gtkglarea.c | 57 +++++-------------------------------------------------
1 files changed, 6 insertions(+), 51 deletions(-)
---
diff --git a/gtk/gtkglarea.c b/gtk/gtkglarea.c
index a1397ff..5a0b350 100644
--- a/gtk/gtkglarea.c
+++ b/gtk/gtkglarea.c
@@ -152,7 +152,6 @@ typedef struct {
int required_gl_version;
guint frame_buffer;
- guint render_buffer;
guint texture;
guint depth_stencil_buffer;
@@ -379,38 +378,13 @@ gtk_gl_area_ensure_buffers (GtkGLArea *area)
glGenFramebuffersEXT (1, &priv->frame_buffer);
- if (priv->has_alpha)
+ if (priv->texture == 0)
{
- /* For alpha we use textures as that is required for blending to work */
- if (priv->texture == 0)
- {
- glGenTextures (1, &priv->texture);
- priv->gdk_texture = gdk_texture_new_for_gl (priv->context,
- priv->texture,
- gtk_widget_get_width (widget),
- gtk_widget_get_height (widget));
- }
-
- /* Delete old render buffer if any */
- if (priv->render_buffer != 0)
- {
- glDeleteRenderbuffersEXT(1, &priv->render_buffer);
- priv->render_buffer = 0;
- }
- }
- else
- {
- /* For non-alpha we use render buffers so we can blit instead of texture the result */
- if (priv->render_buffer == 0)
- glGenRenderbuffersEXT (1, &priv->render_buffer);
-
- /* Delete old texture if any */
- if (priv->texture != 0)
- {
- g_clear_object (&priv->gdk_texture);
- glDeleteTextures(1, &priv->texture);
- priv->texture = 0;
- }
+ glGenTextures (1, &priv->texture);
+ priv->gdk_texture = gdk_texture_new_for_gl (priv->context,
+ priv->texture,
+ gtk_widget_get_width (widget),
+ gtk_widget_get_height (widget));
}
if ((priv->has_depth_buffer || priv->has_stencil_buffer))
@@ -459,12 +433,6 @@ gtk_gl_area_allocate_buffers (GtkGLArea *area)
glTexImage2D (GL_TEXTURE_2D, 0, GL_RGBA8, width, height, 0, GL_BGRA, GL_UNSIGNED_BYTE, NULL);
}
- if (priv->render_buffer)
- {
- glBindRenderbuffer (GL_RENDERBUFFER, priv->render_buffer);
- glRenderbufferStorage (GL_RENDERBUFFER, GL_RGB8, width, height);
- }
-
if (priv->has_depth_buffer || priv->has_stencil_buffer)
{
glBindRenderbuffer (GL_RENDERBUFFER, priv->depth_stencil_buffer);
@@ -513,9 +481,6 @@ gtk_gl_area_attach_buffers (GtkGLArea *area)
if (priv->texture)
glFramebufferTexture2D (GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT,
GL_TEXTURE_2D, priv->texture, 0);
- else if (priv->render_buffer)
- glFramebufferRenderbufferEXT (GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT,
- GL_RENDERBUFFER_EXT, priv->render_buffer);
if (priv->depth_stencil_buffer)
{
@@ -538,12 +503,6 @@ gtk_gl_area_delete_buffers (GtkGLArea *area)
priv->have_buffers = FALSE;
- if (priv->render_buffer != 0)
- {
- glDeleteRenderbuffersEXT (1, &priv->render_buffer);
- priv->render_buffer = 0;
- }
-
if (priv->texture != 0)
{
g_clear_object (&priv->gdk_texture);
@@ -938,8 +897,6 @@ gtk_gl_area_init (GtkGLArea *area)
priv->auto_render = TRUE;
priv->needs_render = TRUE;
priv->required_gl_version = 0;
-
- priv->has_alpha = 1;
}
/**
@@ -1149,8 +1106,6 @@ gtk_gl_area_set_has_alpha (GtkGLArea *area,
has_alpha = !!has_alpha;
- has_alpha = 1;
-
if (priv->has_alpha != has_alpha)
{
priv->has_alpha = has_alpha;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]