From: Benjamin Otte Date: Thu, 18 May 2023 21:22:25 +0000 (+0200) Subject: vulkan: Align vertex data X-Git-Tag: archive/raspbian/4.12.3+ds-1+rpi1~1^2^2^2~22^2~1^2~185^2~13 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=0e93ad867166b0ad22e50cbb5b41346be782c47c;p=gtk4.git vulkan: Align vertex data We align the data to a multiple of vertex stride, that way we use more memory, but we could compute an offset into the vertex buffer without changing the offset. --- diff --git a/gsk/vulkan/gskvulkanrenderpass.c b/gsk/vulkan/gskvulkanrenderpass.c index 97774ac595..04cde9a7d8 100644 --- a/gsk/vulkan/gskvulkanrenderpass.c +++ b/gsk/vulkan/gskvulkanrenderpass.c @@ -1621,6 +1621,12 @@ gsk_vulkan_render_pass_upload (GskVulkanRenderPass *self, } } +static inline gsize +round_up (gsize number, gsize divisor) +{ + return (number + divisor - 1) / divisor * divisor; +} + static gsize gsk_vulkan_render_pass_count_vertex_data (GskVulkanRenderPass *self) { @@ -1651,6 +1657,7 @@ gsk_vulkan_render_pass_count_vertex_data (GskVulkanRenderPass *self) case GSK_VULKAN_OP_CROSS_FADE: case GSK_VULKAN_OP_BLEND_MODE: vertex_stride = gsk_vulkan_pipeline_get_vertex_stride (op->render.pipeline); + n_bytes = round_up (n_bytes, vertex_stride); op->render.vertex_offset = n_bytes; op->render.vertex_count = vertex_stride; n_bytes += op->render.vertex_count; @@ -1659,6 +1666,7 @@ gsk_vulkan_render_pass_count_vertex_data (GskVulkanRenderPass *self) case GSK_VULKAN_OP_TEXT: case GSK_VULKAN_OP_COLOR_TEXT: vertex_stride = gsk_vulkan_pipeline_get_vertex_stride (op->render.pipeline); + n_bytes = round_up (n_bytes, vertex_stride); op->text.vertex_offset = n_bytes; op->text.vertex_count = vertex_stride * op->text.num_glyphs; n_bytes += op->text.vertex_count;