File tree Expand file tree Collapse file tree 1 file changed +26
-1
lines changed Expand file tree Collapse file tree 1 file changed +26
-1
lines changed Original file line number Diff line number Diff line change @@ -105,7 +105,32 @@ PG_UnlockMutex(SDL_mutex *mutex)
105
105
return 0 ;
106
106
}
107
107
108
- #define PG_SURF_BitsPerPixel (surf ) SDL_BITSPERPIXEL(surf->format)
108
+ // Implementation from SDL_GetMasksForPixelFormat, which is used by
109
+ // SDL_InitPixelFormatDetails in SDL_pixels.c
110
+ // Created to match surf->format->BitsPerPixel in SDL2,
111
+ // details->bits_per_pixel in SDL3.
112
+ static inline int
113
+ PG_SURF_BitsPerPixel (SDL_Surface * surf )
114
+ {
115
+ if (SDL_ISPIXELFORMAT_FOURCC (surf -> format )) {
116
+ // however, some of these are packed formats, and can legit declare
117
+ // bits-per-pixel!
118
+ switch (surf -> format ) {
119
+ case SDL_PIXELFORMAT_YUY2 :
120
+ case SDL_PIXELFORMAT_UYVY :
121
+ case SDL_PIXELFORMAT_YVYU :
122
+ return 32 ;
123
+ default :
124
+ return 0 ; // oh well.
125
+ }
126
+ }
127
+
128
+ if (SDL_BYTESPERPIXEL (surf -> format ) <= 2 ) {
129
+ return SDL_BITSPERPIXEL (surf -> format );
130
+ }
131
+ return SDL_BYTESPERPIXEL (surf -> format ) * 8 ;
132
+ }
133
+
109
134
#define PG_SURF_BytesPerPixel (surf ) SDL_BYTESPERPIXEL(surf->format)
110
135
#define PG_FORMAT_BitsPerPixel (format ) format->bits_per_pixel
111
136
#define PG_FORMAT_BytesPerPixel (format ) format->bytes_per_pixel
You can’t perform that action at this time.
0 commit comments