[PATCH v2 2/5] wined3d: Disable YUV formats when not supported.
Matteo Bruni
mbruni at codeweavers.com
Tue Sep 12 14:22:28 CDT 2017
Signed-off-by: Matteo Bruni <mbruni at codeweavers.com>
---
We want to add YUV fixups support to the CPU blitter at some point but
this should do for the time being.
v2: Disable the formats harder and in the proper place.
dlls/wined3d/utils.c | 43 ++++++++++++++++++++++++++++++++-----------
1 file changed, 32 insertions(+), 11 deletions(-)
diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c
index 4c878b6556..0d54334ceb 100644
--- a/dlls/wined3d/utils.c
+++ b/dlls/wined3d/utils.c
@@ -3224,7 +3224,8 @@ static void apply_format_fixups(struct wined3d_adapter *adapter, struct wined3d_
0, CHANNEL_SOURCE_X, 0, CHANNEL_SOURCE_W, 0, CHANNEL_SOURCE_ONE, 0, CHANNEL_SOURCE_ONE);
}
- if (!gl_info->supported[APPLE_YCBCR_422])
+ if (!gl_info->supported[APPLE_YCBCR_422] && gl_info->supported[ARB_FRAGMENT_PROGRAM]
+ && gl_info->supported[WINED3D_GL_LEGACY_CONTEXT])
{
idx = get_format_idx(WINED3DFMT_YUY2);
gl_info->formats[idx].color_fixup = create_complex_fixup_desc(COMPLEX_FIXUP_YUY2);
@@ -3232,18 +3233,38 @@ static void apply_format_fixups(struct wined3d_adapter *adapter, struct wined3d_
idx = get_format_idx(WINED3DFMT_UYVY);
gl_info->formats[idx].color_fixup = create_complex_fixup_desc(COMPLEX_FIXUP_UYVY);
}
+ else if (!gl_info->supported[APPLE_YCBCR_422] && (!gl_info->supported[ARB_FRAGMENT_PROGRAM]
+ || !gl_info->supported[WINED3D_GL_LEGACY_CONTEXT]))
+ {
+ idx = get_format_idx(WINED3DFMT_YUY2);
+ gl_info->formats[idx].glInternal = 0;
+
+ idx = get_format_idx(WINED3DFMT_UYVY);
+ gl_info->formats[idx].glInternal = 0;
+ }
- idx = get_format_idx(WINED3DFMT_YV12);
- format_set_flag(&gl_info->formats[idx], WINED3DFMT_FLAG_HEIGHT_SCALE);
- gl_info->formats[idx].height_scale.numerator = 3;
- gl_info->formats[idx].height_scale.denominator = 2;
- gl_info->formats[idx].color_fixup = create_complex_fixup_desc(COMPLEX_FIXUP_YV12);
+ if (gl_info->supported[ARB_FRAGMENT_PROGRAM] && gl_info->supported[WINED3D_GL_LEGACY_CONTEXT])
+ {
+ idx = get_format_idx(WINED3DFMT_YV12);
+ format_set_flag(&gl_info->formats[idx], WINED3DFMT_FLAG_HEIGHT_SCALE);
+ gl_info->formats[idx].height_scale.numerator = 3;
+ gl_info->formats[idx].height_scale.denominator = 2;
+ gl_info->formats[idx].color_fixup = create_complex_fixup_desc(COMPLEX_FIXUP_YV12);
- idx = get_format_idx(WINED3DFMT_NV12);
- format_set_flag(&gl_info->formats[idx], WINED3DFMT_FLAG_HEIGHT_SCALE);
- gl_info->formats[idx].height_scale.numerator = 3;
- gl_info->formats[idx].height_scale.denominator = 2;
- gl_info->formats[idx].color_fixup = create_complex_fixup_desc(COMPLEX_FIXUP_NV12);
+ idx = get_format_idx(WINED3DFMT_NV12);
+ format_set_flag(&gl_info->formats[idx], WINED3DFMT_FLAG_HEIGHT_SCALE);
+ gl_info->formats[idx].height_scale.numerator = 3;
+ gl_info->formats[idx].height_scale.denominator = 2;
+ gl_info->formats[idx].color_fixup = create_complex_fixup_desc(COMPLEX_FIXUP_NV12);
+ }
+ else
+ {
+ idx = get_format_idx(WINED3DFMT_YV12);
+ gl_info->formats[idx].glInternal = 0;
+
+ idx = get_format_idx(WINED3DFMT_NV12);
+ gl_info->formats[idx].glInternal = 0;
+ }
if (!gl_info->supported[WINED3D_GL_LEGACY_CONTEXT])
{
--
2.13.5
More information about the wine-patches
mailing list