aboutsummaryrefslogtreecommitdiff
path: root/render
diff options
context:
space:
mode:
authorDrew DeVault <sir@cmpwn.com>2018-03-19 16:36:17 -0400
committerGitHub <noreply@github.com>2018-03-19 16:36:17 -0400
commita76cef475b6da9d4953e7b3503a35f01aa7c824e (patch)
tree153daa6a73982424c1e68aaac91b88ef9c67d4d6 /render
parent8d490fdb34ad4374b3ab144f1b46296eb81ad316 (diff)
parent6ecb0eefcba21d923bd01fce688dbd6bd399fbae (diff)
Merge pull request #733 from emersion/fix-matrix-transpose
Don't use OpenGL matrix transposition
Diffstat (limited to 'render')
-rw-r--r--render/gles2/renderer.c21
1 files changed, 18 insertions, 3 deletions
diff --git a/render/gles2/renderer.c b/render/gles2/renderer.c
index a212e908..8d8dd17f 100644
--- a/render/gles2/renderer.c
+++ b/render/gles2/renderer.c
@@ -180,8 +180,13 @@ static bool wlr_gles2_render_texture_with_matrix(
return false;
}
+ // OpenGL ES 2 requires the glUniformMatrix3fv transpose parameter to be set
+ // to GL_FALSE
+ float transposition[9];
+ wlr_matrix_transpose(transposition, matrix);
+
wlr_texture_bind(texture);
- GL_CALL(glUniformMatrix3fv(0, 1, GL_TRUE, matrix));
+ GL_CALL(glUniformMatrix3fv(0, 1, GL_FALSE, transposition));
GL_CALL(glUniform1i(1, texture->inverted_y));
GL_CALL(glUniform1f(3, alpha));
draw_quad();
@@ -191,16 +196,26 @@ static bool wlr_gles2_render_texture_with_matrix(
static void wlr_gles2_render_quad(struct wlr_renderer *wlr_renderer,
const float color[static 4], const float matrix[static 9]) {
+ // OpenGL ES 2 requires the glUniformMatrix3fv transpose parameter to be set
+ // to GL_FALSE
+ float transposition[9];
+ wlr_matrix_transpose(transposition, matrix);
+
GL_CALL(glUseProgram(shaders.quad));
- GL_CALL(glUniformMatrix3fv(0, 1, GL_TRUE, matrix));
+ GL_CALL(glUniformMatrix3fv(0, 1, GL_FALSE, transposition));
GL_CALL(glUniform4f(1, color[0], color[1], color[2], color[3]));
draw_quad();
}
static void wlr_gles2_render_ellipse(struct wlr_renderer *wlr_renderer,
const float color[static 4], const float matrix[static 9]) {
+ // OpenGL ES 2 requires the glUniformMatrix3fv transpose parameter to be set
+ // to GL_FALSE
+ float transposition[9];
+ wlr_matrix_transpose(transposition, matrix);
+
GL_CALL(glUseProgram(shaders.ellipse));
- GL_CALL(glUniformMatrix3fv(0, 1, GL_TRUE, matrix));
+ GL_CALL(glUniformMatrix3fv(0, 1, GL_FALSE, transposition));
GL_CALL(glUniform4f(1, color[0], color[1], color[2], color[3]));
draw_quad();
}