diff --git a/subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkformat.c b/subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkformat.c index 2d59489ef0..b0ba1d5488 100644 --- a/subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkformat.c +++ b/subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkformat.c @@ -438,15 +438,15 @@ const static struct { VkFormat vkfrmt; VkFormat vkfrmts[GST_VIDEO_MAX_PLANES]; } vk_formats_map[] = { - /* RGB transfer sRGB */ - { GST_VIDEO_FORMAT_RGBA, VK_FORMAT_R8G8B8A8_SRGB, { VK_FORMAT_R8G8B8A8_UNORM, } }, - { GST_VIDEO_FORMAT_RGBx, VK_FORMAT_R8G8B8A8_SRGB, { VK_FORMAT_R8G8B8A8_UNORM, } }, - { GST_VIDEO_FORMAT_BGRA, VK_FORMAT_B8G8R8A8_SRGB, { VK_FORMAT_B8G8R8A8_UNORM, } }, - { GST_VIDEO_FORMAT_BGRx, VK_FORMAT_B8G8R8A8_SRGB, { VK_FORMAT_B8G8R8A8_UNORM, } }, - { GST_VIDEO_FORMAT_ARGB, VK_FORMAT_UNDEFINED, { VK_FORMAT_R8G8B8A8_UNORM, } }, - { GST_VIDEO_FORMAT_xRGB, VK_FORMAT_UNDEFINED, { VK_FORMAT_R8G8B8A8_UNORM, } }, - { GST_VIDEO_FORMAT_ABGR, VK_FORMAT_UNDEFINED, { VK_FORMAT_R8G8B8A8_UNORM, } }, - { GST_VIDEO_FORMAT_xBGR, VK_FORMAT_UNDEFINED, { VK_FORMAT_R8G8B8A8_UNORM, } }, + /* RGB unsigned normalized format sRGB nonlinear encoding */ + { GST_VIDEO_FORMAT_RGBA, VK_FORMAT_R8G8B8A8_UNORM, { VK_FORMAT_R8G8B8A8_SRGB, } }, + { GST_VIDEO_FORMAT_RGBx, VK_FORMAT_R8G8B8A8_UNORM, { VK_FORMAT_R8G8B8A8_SRGB, } }, + { GST_VIDEO_FORMAT_BGRA, VK_FORMAT_B8G8R8A8_UNORM, { VK_FORMAT_B8G8R8A8_SRGB, } }, + { GST_VIDEO_FORMAT_BGRx, VK_FORMAT_B8G8R8A8_UNORM, { VK_FORMAT_B8G8R8A8_SRGB, } }, + { GST_VIDEO_FORMAT_ARGB, VK_FORMAT_R8G8B8A8_UNORM, { VK_FORMAT_UNDEFINED, } }, + { GST_VIDEO_FORMAT_xRGB, VK_FORMAT_R8G8B8A8_UNORM, { VK_FORMAT_UNDEFINED, } }, + { GST_VIDEO_FORMAT_ABGR, VK_FORMAT_R8G8B8A8_UNORM, { VK_FORMAT_UNDEFINED, } }, + { GST_VIDEO_FORMAT_xBGR, VK_FORMAT_R8G8B8A8_UNORM, { VK_FORMAT_UNDEFINED, } }, { GST_VIDEO_FORMAT_RGB, VK_FORMAT_R8G8B8_UNORM, { VK_FORMAT_UNDEFINED, } }, { GST_VIDEO_FORMAT_BGR, VK_FORMAT_B8G8R8_UNORM, { VK_FORMAT_UNDEFINED, } }, { GST_VIDEO_FORMAT_RGB16, VK_FORMAT_R5G6B5_UNORM_PACK16, { VK_FORMAT_UNDEFINED, } }, @@ -494,12 +494,7 @@ gst_vulkan_format_from_video_info (GstVideoInfo * v_info, guint plane) continue; if (GST_VIDEO_INFO_IS_RGB (v_info)) { - if (GST_VIDEO_INFO_COLORIMETRY (v_info).transfer == - GST_VIDEO_TRANSFER_SRGB) { - return vk_formats_map[i].vkfrmt; - } else { - return vk_formats_map[i].vkfrmts[0]; - } + return vk_formats_map[i].vkfrmt; } else if (GST_VIDEO_INFO_IS_YUV (v_info) && GST_VIDEO_INFO_N_PLANES (v_info) > plane) { return vk_formats_map[i].vkfrmts[plane]; @@ -655,33 +650,26 @@ gst_vulkan_format_from_video_info_2 (GstVulkanPhysicalDevice * physical_device, } if (GST_VIDEO_INFO_IS_RGB (info)) { - if ((GST_VIDEO_INFO_COLORIMETRY (info).transfer == - GST_VIDEO_TRANSFER_SRGB - || GST_VIDEO_INFO_COLORIMETRY (info).transfer == - GST_VIDEO_TRANSFER_UNKNOWN)) { - usage = _get_usage (feats_primary); - if ((requested_usage & usage) == requested_usage) { - if (fmts) - fmts[0] = vk_formats_map[i].vkfrmt; - if (n_imgs) - *n_imgs = 1; - if (usage_ret) - *usage_ret = usage; - return TRUE; - } + usage = _get_usage (feats_primary); + if ((requested_usage & usage) == requested_usage) { + if (fmts) + fmts[0] = vk_formats_map[i].vkfrmt; + if (n_imgs) + *n_imgs = 1; + if (usage_ret) + *usage_ret = usage; + return TRUE; } - if (GST_VIDEO_INFO_COLORIMETRY (info).transfer != GST_VIDEO_TRANSFER_SRGB) { - usage = _get_usage (feats_secondary); - if ((requested_usage & usage) == requested_usage) { - if (fmts) - fmts[0] = vk_formats_map[i].vkfrmts[0]; - if (n_imgs) - *n_imgs = 1; - if (usage_ret) - *usage_ret = usage; - return TRUE; - } + usage = _get_usage (feats_secondary); + if ((requested_usage & usage) == requested_usage) { + if (fmts) + fmts[0] = vk_formats_map[i].vkfrmts[0]; + if (n_imgs) + *n_imgs = 1; + if (usage_ret) + *usage_ret = usage; + return TRUE; } return FALSE; } else { diff --git a/subprojects/gst-plugins-bad/tests/check/libs/vkformat.c b/subprojects/gst-plugins-bad/tests/check/libs/vkformat.c index dd36fdb015..f57ffa8bfc 100644 --- a/subprojects/gst-plugins-bad/tests/check/libs/vkformat.c +++ b/subprojects/gst-plugins-bad/tests/check/libs/vkformat.c @@ -77,7 +77,7 @@ GST_START_TEST (test_format_from_video_info_2) fail_unless (gst_vulkan_format_from_video_info_2 (phy_dev, &vinfo, VK_IMAGE_TILING_LINEAR, TRUE, 0, vk_fmts, &n_imgs, &supported_usage)); - fail_unless (n_imgs == 1 && vk_fmts[0] == VK_FORMAT_R8G8B8A8_SRGB); + fail_unless (n_imgs == 1 && vk_fmts[0] == VK_FORMAT_R8G8B8A8_UNORM); fail_unless (gst_video_info_set_format (&vinfo, GST_VIDEO_FORMAT_RGBA, 620, 480));