From 09eede9c9d51629e70ddf8ef35ba0879073b0825 Mon Sep 17 00:00:00 2001 From: Jason Ekstrand Date: Sat, 21 Jan 2017 11:30:40 -0800 Subject: [PATCH] anv: Allow blitting to/from any supported format Now that blorp handles all the cases, why not? The only real change we have to make is to stop using anv_swizzle_for_render() in blorp_blit because it doesn't work for B4G4R4A4 and blorp now natively handles that. Reviewed-by: Topi Pohjolainen --- src/intel/vulkan/anv_blorp.c | 3 +-- src/intel/vulkan/anv_formats.c | 10 +++++----- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/intel/vulkan/anv_blorp.c b/src/intel/vulkan/anv_blorp.c index 68e2ed65c29..c4a3e4a405e 100644 --- a/src/intel/vulkan/anv_blorp.c +++ b/src/intel/vulkan/anv_blorp.c @@ -602,8 +602,7 @@ void anv_CmdBlitImage( blorp_blit(&batch, &src, src_res->mipLevel, src_z, src_format.isl_format, src_format.swizzle, &dst, dst_res->mipLevel, dst_z, - dst_format.isl_format, - anv_swizzle_for_render(dst_format.swizzle), + dst_format.isl_format, dst_format.swizzle, src_x0, src_y0, src_x1, src_y1, dst_x0, dst_y0, dst_x1, dst_y1, gl_filter, flip_x, flip_y); diff --git a/src/intel/vulkan/anv_formats.c b/src/intel/vulkan/anv_formats.c index 3b821f10bdb..0c5b8d3a2c8 100644 --- a/src/intel/vulkan/anv_formats.c +++ b/src/intel/vulkan/anv_formats.c @@ -519,8 +519,7 @@ get_image_format_features(const struct gen_device_info *devinfo, return 0; if (isl_format_supports_sampling(devinfo, plane_format.isl_format)) { - flags |= VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | - VK_FORMAT_FEATURE_BLIT_SRC_BIT; + flags |= VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT; if (isl_format_supports_filtering(devinfo, plane_format.isl_format)) flags |= VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT; @@ -532,8 +531,7 @@ get_image_format_features(const struct gen_device_info *devinfo, */ if (isl_format_supports_rendering(devinfo, plane_format.isl_format) && plane_format.swizzle.a == ISL_CHANNEL_SELECT_ALPHA) { - flags |= VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT | - VK_FORMAT_FEATURE_BLIT_DST_BIT; + flags |= VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT; if (isl_format_supports_alpha_blending(devinfo, plane_format.isl_format)) flags |= VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT; @@ -550,7 +548,9 @@ get_image_format_features(const struct gen_device_info *devinfo, flags |= VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT; if (flags) { - flags |= VK_FORMAT_FEATURE_TRANSFER_SRC_BIT | + flags |= VK_FORMAT_FEATURE_BLIT_SRC_BIT | + VK_FORMAT_FEATURE_BLIT_DST_BIT | + VK_FORMAT_FEATURE_TRANSFER_SRC_BIT | VK_FORMAT_FEATURE_TRANSFER_DST_BIT; } -- 2.30.2