diff --git a/src/layer/vulkan/convolution_vulkan.cpp b/src/layer/vulkan/convolution_vulkan.cpp index 2925ad46d..340330e89 100644 --- a/src/layer/vulkan/convolution_vulkan.cpp +++ b/src/layer/vulkan/convolution_vulkan.cpp @@ -1005,7 +1005,7 @@ int Convolution_vulkan::forward(const VkMat& bottom_blob, VkMat& top_blob, VkCom if (opt.use_winograd_convolution && is_conv3x3s1d1 && channels * elempack >= 16 && num_output >= 16) { bool pre_winograd43 = true; - if (vkdev->info.type() == 0 && (w <= 24 && h <= 24 && (w != 22 && h != 22))) + if (vkdev->info.type() == 0 && ((w <= 18 && h <= 18) || (w >= 23 && w <= 24) && (h >= 23 && h <= 24))) pre_winograd43 = false; if (vkdev->info.type() != 0 && (w <= 12 && h <= 12)) pre_winograd43 = false; @@ -1378,7 +1378,7 @@ int Convolution_vulkan::forward(const VkImageMat& bottom_blob, VkImageMat& top_b if (opt.use_winograd_convolution && is_conv3x3s1d1 && channels * elempack >= 16 && num_output >= 16) { bool pre_winograd43 = true; - if (vkdev->info.type() == 0 && (w <= 24 && h <= 24 && (w != 22 && h != 22))) + if (vkdev->info.type() == 0 && ((w <= 18 && h <= 18) || (w >= 23 && w <= 24) && (h >= 23 && h <= 24))) pre_winograd43 = false; if (vkdev->info.type() != 0 && (w <= 12 && h <= 12)) pre_winograd43 = false;