From 3d2d5d18f3bd667eb1a87409fa033911c8713e67 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Fri, 15 Dec 2023 11:11:24 -0500 Subject: [PATCH] pixels: Packed-pixel YUV formats can legit report bits-per-pixel. This makes the existing SDL_SoftStretch code work with them, at least for nearest-neighbor scaling; otherwise, it'll mangle the data trying to scale it as 8bpp data without warning. --- src/video/SDL_pixels.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/video/SDL_pixels.c b/src/video/SDL_pixels.c index 41f32e389c..88b13ccbdf 100644 --- a/src/video/SDL_pixels.c +++ b/src/video/SDL_pixels.c @@ -147,8 +147,17 @@ SDL_bool SDL_GetMasksForPixelFormatEnum(Uint32 format, int *bpp, Uint32 *Rmask, /* Partial support for SDL_Surface with FOURCC */ if (SDL_ISPIXELFORMAT_FOURCC(format)) { /* Not a format that uses masks */ - *bpp = 0; *Rmask = *Gmask = *Bmask = *Amask = 0; + // however, some of these are packed formats, and can legit declare bits-per-pixel! + switch (format) { + case SDL_PIXELFORMAT_YUY2: + case SDL_PIXELFORMAT_UYVY: + case SDL_PIXELFORMAT_YVYU: + *bpp = 32; + break; + default: + *bpp = 0; // oh well. + } return SDL_TRUE; } #else