[gtk+/wip/gl-texture: 5/5] Flip gl textures when used in the gl renderer
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/wip/gl-texture: 5/5] Flip gl textures when used in the gl renderer
- Date: Wed, 17 Jan 2018 18:43:06 +0000 (UTC)
commit fe7d078d5a9c8010397b56c263ac17a879e28c71
Author: Matthias Clasen <mclasen redhat com>
Date: Wed Jan 17 13:42:19 2018 -0500
Flip gl textures when used in the gl renderer
gsk/gl/gskglrenderer.c | 7 ++++++-
gsk/gl/gskglrenderopsprivate.h | 2 +-
gsk/meson.build | 1 +
gsk/resources/glsl/flip.vs.glsl | 5 +++++
4 files changed, 13 insertions(+), 2 deletions(-)
---
diff --git a/gsk/gl/gskglrenderer.c b/gsk/gl/gskglrenderer.c
index 7dfa012..de8fb5d 100644
--- a/gsk/gl/gskglrenderer.c
+++ b/gsk/gl/gskglrenderer.c
@@ -202,6 +202,7 @@ struct _GskGLRenderer
struct {
Program blend_program;
Program blit_program;
+ Program flip_program;
Program color_program;
Program coloring_program;
Program color_matrix_program;
@@ -597,7 +598,10 @@ render_texture_node (GskGLRenderer *self,
texture,
gl_min_filter,
gl_mag_filter);
- ops_set_program (builder, &self->blit_program);
+ if (GDK_IS_GL_TEXTURE (texture))
+ ops_set_program (builder, &self->flip_program);
+ else
+ ops_set_program (builder, &self->blit_program);
ops_set_texture (builder, texture_id);
ops_draw (builder, vertex_data);
}
@@ -1717,6 +1721,7 @@ gsk_gl_renderer_create_programs (GskGLRenderer *self,
} program_definitions[] = {
{ "blend", "blend.vs.glsl", "blend.fs.glsl" },
{ "blit", "blit.vs.glsl", "blit.fs.glsl" },
+ { "flip", "flip.vs.glsl", "blit.fs.glsl" },
{ "color", "blit.vs.glsl", "color.fs.glsl" },
{ "coloring", "blit.vs.glsl", "coloring.fs.glsl" },
{ "color matrix", "blit.vs.glsl", "color_matrix.fs.glsl" },
diff --git a/gsk/gl/gskglrenderopsprivate.h b/gsk/gl/gskglrenderopsprivate.h
index b700b75..bce2526 100644
--- a/gsk/gl/gskglrenderopsprivate.h
+++ b/gsk/gl/gskglrenderopsprivate.h
@@ -10,7 +10,7 @@
#include "gskglrendererprivate.h"
#define GL_N_VERTICES 6
-#define GL_N_PROGRAMS 13
+#define GL_N_PROGRAMS 14
enum {
OP_NONE,
diff --git a/gsk/meson.build b/gsk/meson.build
index d6e1342..c785806 100644
--- a/gsk/meson.build
+++ b/gsk/meson.build
@@ -3,6 +3,7 @@ gsk_private_gl_shaders = [
'resources/glsl/blend.vs.glsl',
'resources/glsl/blit.fs.glsl',
'resources/glsl/blit.vs.glsl',
+ 'resources/glsl/flip.vs.glsl',
'resources/glsl/color.fs.glsl',
'resources/glsl/coloring.fs.glsl',
'resources/glsl/color_matrix.fs.glsl',
diff --git a/gsk/resources/glsl/flip.vs.glsl b/gsk/resources/glsl/flip.vs.glsl
new file mode 100644
index 0000000..28bb70e
--- /dev/null
+++ b/gsk/resources/glsl/flip.vs.glsl
@@ -0,0 +1,5 @@
+void main() {
+ gl_Position = u_projection * u_modelview * vec4(aPosition, 0.0, 1.0);
+
+ vUv = vec2(aUv.x, 1 - aUv.y);
+}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]