From 6072cc914a1807b803601f7da928edfd4b150104 Mon Sep 17 00:00:00 2001 From: Dave Houlton Date: Wed, 1 Mar 2017 16:23:25 -0700 Subject: layers, Fix checks for GH 1507 Bugfix and refactor for github issue 1507 (and lunar exchange #652). Fixes buffer size calculation for compressed textures when copy extent is less than block size, corrected for mip level. Layer tests modified to avoid breakage from this fix. Change-Id: If91d6f8c7ce17a3e012923304a3b178e750d2659 --- layers/vk_layer_utils.cpp | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) (limited to 'layers/vk_layer_utils.cpp') diff --git a/layers/vk_layer_utils.cpp b/layers/vk_layer_utils.cpp index af911df1..62ccf35f 100644 --- a/layers/vk_layer_utils.cpp +++ b/layers/vk_layer_utils.cpp @@ -703,8 +703,8 @@ VK_LAYER_EXPORT bool vk_format_is_compressed(VkFormat format) { } // Return compressed texel block sizes for block compressed formats -VK_LAYER_EXPORT VkExtent2D vk_format_compressed_texel_block_extents(VkFormat format) { - VkExtent2D block_size = {1, 1}; +VK_LAYER_EXPORT VkExtent3D vk_format_compressed_texel_block_extents(VkFormat format) { + VkExtent3D block_size = {1, 1, 1}; switch (format) { case VK_FORMAT_BC1_RGB_UNORM_BLOCK: case VK_FORMAT_BC1_RGB_SRGB_BLOCK: @@ -734,59 +734,59 @@ VK_LAYER_EXPORT VkExtent2D vk_format_compressed_texel_block_extents(VkFormat for case VK_FORMAT_EAC_R11G11_SNORM_BLOCK: case VK_FORMAT_ASTC_4x4_UNORM_BLOCK: case VK_FORMAT_ASTC_4x4_SRGB_BLOCK: - block_size = {4, 4}; + block_size = {4, 4, 1}; break; case VK_FORMAT_ASTC_5x4_UNORM_BLOCK: case VK_FORMAT_ASTC_5x4_SRGB_BLOCK: - block_size = {5, 4}; + block_size = {5, 4, 1}; break; case VK_FORMAT_ASTC_5x5_UNORM_BLOCK: case VK_FORMAT_ASTC_5x5_SRGB_BLOCK: - block_size = {5, 5}; + block_size = {5, 5, 1}; break; case VK_FORMAT_ASTC_6x5_UNORM_BLOCK: case VK_FORMAT_ASTC_6x5_SRGB_BLOCK: - block_size = {6, 5}; + block_size = {6, 5, 1}; break; case VK_FORMAT_ASTC_6x6_UNORM_BLOCK: case VK_FORMAT_ASTC_6x6_SRGB_BLOCK: - block_size = {6, 6}; + block_size = {6, 6, 1}; break; case VK_FORMAT_ASTC_8x5_UNORM_BLOCK: case VK_FORMAT_ASTC_8x5_SRGB_BLOCK: - block_size = {8, 5}; + block_size = {8, 5, 1}; break; case VK_FORMAT_ASTC_8x6_UNORM_BLOCK: case VK_FORMAT_ASTC_8x6_SRGB_BLOCK: - block_size = {8, 6}; + block_size = {8, 6, 1}; break; case VK_FORMAT_ASTC_8x8_UNORM_BLOCK: case VK_FORMAT_ASTC_8x8_SRGB_BLOCK: - block_size = {8, 8}; + block_size = {8, 8, 1}; break; case VK_FORMAT_ASTC_10x5_UNORM_BLOCK: case VK_FORMAT_ASTC_10x5_SRGB_BLOCK: - block_size = {10, 5}; + block_size = {10, 5, 1}; break; case VK_FORMAT_ASTC_10x6_UNORM_BLOCK: case VK_FORMAT_ASTC_10x6_SRGB_BLOCK: - block_size = {10, 6}; + block_size = {10, 6, 1}; break; case VK_FORMAT_ASTC_10x8_UNORM_BLOCK: case VK_FORMAT_ASTC_10x8_SRGB_BLOCK: - block_size = {10, 8}; + block_size = {10, 8, 1}; break; case VK_FORMAT_ASTC_10x10_UNORM_BLOCK: case VK_FORMAT_ASTC_10x10_SRGB_BLOCK: - block_size = {10, 10}; + block_size = {10, 10, 1}; break; case VK_FORMAT_ASTC_12x10_UNORM_BLOCK: case VK_FORMAT_ASTC_12x10_SRGB_BLOCK: - block_size = {12, 10}; + block_size = {12, 10, 1}; break; case VK_FORMAT_ASTC_12x12_UNORM_BLOCK: case VK_FORMAT_ASTC_12x12_SRGB_BLOCK: - block_size = {12, 12}; + block_size = {12, 12, 1}; break; default: break; -- cgit v1.2.3