diff options
author | Jonas Ådahl <jadahl@gmail.com> | 2019-12-03 16:42:03 +0100 |
---|---|---|
committer | Jonas Ådahl <jadahl@gmail.com> | 2019-12-03 16:45:37 +0100 |
commit | ba74f41a70a71f67d82e72f13f3c0c32071441d6 (patch) | |
tree | ca3c3c0c9485c264a08fe03c8f30e17399c1570e /gdk | |
parent | d6a6313493f658912eb64349d924dc95f6a1aa19 (diff) | |
download | gtk+-ba74f41a70a71f67d82e72f13f3c0c32071441d6.tar.gz |
wayland/vulkancontext: Fix present region on HiDPI
VkPresentRegionsKHR is expected to operate in buffer coordinates, but
the region we get passed is in surface coordinates, so it must be scaled.
Diffstat (limited to 'gdk')
-rw-r--r-- | gdk/gdkvulkancontext.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/gdk/gdkvulkancontext.c b/gdk/gdkvulkancontext.c index 247e6e094f..5582afeb92 100644 --- a/gdk/gdkvulkancontext.c +++ b/gdk/gdkvulkancontext.c @@ -441,11 +441,14 @@ gdk_vulkan_context_end_frame (GdkDrawContext *draw_context, { GdkVulkanContext *context = GDK_VULKAN_CONTEXT (draw_context); GdkVulkanContextPrivate *priv = gdk_vulkan_context_get_instance_private (context); + GdkSurface *surface = gdk_draw_context_get_surface (draw_context); VkPresentRegionsKHR *regionsptr = VK_NULL_HANDLE; VkPresentRegionsKHR regions; cairo_rectangle_int_t extents; + int scale; cairo_region_get_extents (painted, &extents); + scale = gdk_surface_get_scale_factor (surface); regions = (VkPresentRegionsKHR) { .sType = VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR, @@ -454,10 +457,10 @@ gdk_vulkan_context_end_frame (GdkDrawContext *draw_context, .rectangleCount = 1, .pRectangles = &(VkRectLayerKHR) { .layer = 0, - .offset.x = extents.x, - .offset.y = extents.y, - .extent.width = extents.width, - .extent.height = extents.height, + .offset.x = extents.x * scale, + .offset.y = extents.y * scale, + .extent.width = extents.width * scale, + .extent.height = extents.height * scale, } }, }; |