gallivm: Fix subsampled format sampling under Vulkan

Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24295>
This commit is contained in:
Konstantin Seurer 2023-07-23 12:32:26 +02:00 committed by Marge Bot
parent 1280cf5b2a
commit c7914a84e9

View file

@ -367,12 +367,18 @@ uyvy_to_rgba_aos(struct gallivm_state *gallivm,
LLVMValueRef i)
{
LLVMValueRef y, u, v;
LLVMValueRef r, g, b;
LLVMValueRef rgba;
uyvy_to_yuv_soa(gallivm, n, packed, i, &y, &u, &v);
yuv_to_rgb_soa(gallivm, n, y, u, v, &r, &g, &b);
rgba = rgb_to_rgba_aos(gallivm, n, r, g, b);
if (gallivm->texture_descriptor) {
/* Vulkan expects us to pack raw data. */
rgba = rgb_to_rgba_aos(gallivm, n, u, y, v);
} else {
LLVMValueRef r, g, b;
yuv_to_rgb_soa(gallivm, n, y, u, v, &r, &g, &b);
rgba = rgb_to_rgba_aos(gallivm, n, r, g, b);
}
return rgba;
}
@ -408,12 +414,18 @@ yuyv_to_rgba_aos(struct gallivm_state *gallivm,
LLVMValueRef i)
{
LLVMValueRef y, u, v;
LLVMValueRef r, g, b;
LLVMValueRef rgba;
yuyv_to_yuv_soa(gallivm, n, packed, i, &y, &u, &v);
yuv_to_rgb_soa(gallivm, n, y, u, v, &r, &g, &b);
rgba = rgb_to_rgba_aos(gallivm, n, r, g, b);
if (gallivm->texture_descriptor) {
/* Vulkan expects us to pack raw data. */
rgba = rgb_to_rgba_aos(gallivm, n, u, y, v);
} else {
LLVMValueRef r, g, b;
yuv_to_rgb_soa(gallivm, n, y, u, v, &r, &g, &b);
rgba = rgb_to_rgba_aos(gallivm, n, r, g, b);
}
return rgba;
}