diff --git a/include/types/wlr_matrix.h b/include/types/wlr_matrix.h new file mode 100644 index 00000000..ce599dc1 --- /dev/null +++ b/include/types/wlr_matrix.h @@ -0,0 +1,15 @@ +#ifndef TYPES_WLR_MATRIX_H +#define TYPES_WLR_MATRIX_H + +#include + +/** + * Writes a 2D orthographic projection matrix to mat of (width, height) with a + * specified wl_output_transform. + * + * Equivalent to glOrtho(0, width, 0, height, 1, -1) with the transform applied. + */ +void matrix_projection(float mat[static 9], int width, int height, + enum wl_output_transform transform); + +#endif diff --git a/include/wlr/types/wlr_matrix.h b/include/wlr/types/wlr_matrix.h index 1a8b5be5..043cf6d3 100644 --- a/include/wlr/types/wlr_matrix.h +++ b/include/wlr/types/wlr_matrix.h @@ -43,14 +43,6 @@ void wlr_matrix_rotate(float mat[static 9], float rad); void wlr_matrix_transform(float mat[static 9], enum wl_output_transform transform); -/** Writes a 2D orthographic projection matrix to mat of (width, height) with a - * specified wl_output_transform. - * - * Deprecated: this function is deprecated and will be removed in a future - * version of wlroots. */ -void wlr_matrix_projection(float mat[static 9], int width, int height, - enum wl_output_transform transform); - /** Shortcut for the various matrix operations involved in projecting the * specified wlr_box onto a given orthographic projection with a given * rotation. The result is written to mat, which can be applied to each diff --git a/render/gles2/renderer.c b/render/gles2/renderer.c index c47081ae..5a2f31b5 100644 --- a/render/gles2/renderer.c +++ b/render/gles2/renderer.c @@ -17,6 +17,7 @@ #include "render/egl.h" #include "render/gles2.h" #include "render/pixel_format.h" +#include "types/wlr_matrix.h" static const GLfloat verts[] = { 1, 0, // top right @@ -203,7 +204,7 @@ static void gles2_begin(struct wlr_renderer *wlr_renderer, uint32_t width, renderer->viewport_height = height; // refresh projection matrix - wlr_matrix_projection(renderer->projection, width, height, + matrix_projection(renderer->projection, width, height, WL_OUTPUT_TRANSFORM_FLIPPED_180); glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA); diff --git a/render/vulkan/renderer.c b/render/vulkan/renderer.c index 21b36bdd..c373269d 100644 --- a/render/vulkan/renderer.c +++ b/render/vulkan/renderer.c @@ -23,6 +23,7 @@ #include "render/vulkan/shaders/texture.frag.h" #include "render/vulkan/shaders/quad.frag.h" #include "types/wlr_buffer.h" +#include "types/wlr_matrix.h" // TODO: // - simplify stage allocation, don't track allocations but use ringbuffer-like @@ -564,9 +565,9 @@ static void vulkan_begin(struct wlr_renderer *wlr_renderer, vkCmdSetScissor(cb, 0, 1, &rect); // Refresh projection matrix. - // wlr_matrix_projection assumes a GL corrdinate system so we need + // matrix_projection() assumes a GL coordinate system so we need // to pass WL_OUTPUT_TRANSFORM_FLIPPED_180 to adjust it for vulkan. - wlr_matrix_projection(renderer->projection, width, height, + matrix_projection(renderer->projection, width, height, WL_OUTPUT_TRANSFORM_FLIPPED_180); renderer->render_width = width; diff --git a/types/wlr_matrix.c b/types/wlr_matrix.c index a1b2b31a..7b6671f5 100644 --- a/types/wlr_matrix.c +++ b/types/wlr_matrix.c @@ -4,6 +4,7 @@ #include #include #include +#include "types/wlr_matrix.h" void wlr_matrix_identity(float mat[static 9]) { static const float identity[9] = { @@ -117,8 +118,7 @@ void wlr_matrix_transform(float mat[static 9], wlr_matrix_multiply(mat, mat, transforms[transform]); } -// Equivalent to glOrtho(0, width, 0, height, 1, -1) with the transform applied -void wlr_matrix_projection(float mat[static 9], int width, int height, +void matrix_projection(float mat[static 9], int width, int height, enum wl_output_transform transform) { memset(mat, 0, sizeof(*mat) * 9);