summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPedro J. Estébanez <pedrojrulez@gmail.com>2024-01-06 00:05:15 +0100
committerPedro J. Estébanez <pedrojrulez@gmail.com>2024-01-06 00:06:28 +0100
commite1c7c18eadeff1fe9ee3cabaafc7fded6ff64b2c (patch)
tree61e744abb6b4ca3102e67a1f604b2a6646a7802c
parent89cc635c0554cb2e518c830969ca4c5eedda0f4e (diff)
downloadredot-engine-e1c7c18eadeff1fe9ee3cabaafc7fded6ff64b2c.tar.gz
Fix determination of copyable layout for compressed textures in Vulkan
-rw-r--r--drivers/vulkan/rendering_device_driver_vulkan.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/vulkan/rendering_device_driver_vulkan.cpp b/drivers/vulkan/rendering_device_driver_vulkan.cpp
index e18161c974..714394b505 100644
--- a/drivers/vulkan/rendering_device_driver_vulkan.cpp
+++ b/drivers/vulkan/rendering_device_driver_vulkan.cpp
@@ -805,8 +805,11 @@ void RenderingDeviceDriverVulkan::texture_get_copyable_layout(TextureID p_textur
h = MAX(1u, h >> 1);
d = MAX(1u, d >> 1);
}
- r_layout->size = get_image_format_required_size(tex_info->rd_format, w, h, d, 1);
- r_layout->row_pitch = r_layout->size / (h * d);
+ uint32_t bw = 0, bh = 0;
+ get_compressed_image_format_block_dimensions(tex_info->rd_format, bw, bh);
+ uint32_t sbw = 0, sbh = 0;
+ r_layout->size = get_image_format_required_size(tex_info->rd_format, w, h, d, 1, &sbw, &sbh);
+ r_layout->row_pitch = r_layout->size / ((sbh / bh) * d);
r_layout->depth_pitch = r_layout->size / d;
r_layout->layer_pitch = r_layout->size / tex_info->vk_create_info.arrayLayers;
}