From 4cd0c13823551cce279c9ff3d284c41c28deb3d8 Mon Sep 17 00:00:00 2001
From: Anonymous Maarten <[EMAIL REDACTED]>
Date: Wed, 4 Oct 2023 21:17:13 +0200
Subject: [PATCH] blit_slow: don't read destination pixel when you're going to
discard it anyways
---
src/video/SDL_blit_slow.c | 21 +++++++++++++--------
1 file changed, 13 insertions(+), 8 deletions(-)
diff --git a/src/video/SDL_blit_slow.c b/src/video/SDL_blit_slow.c
index 6348fbf26f28..3c2730c05a37 100644
--- a/src/video/SDL_blit_slow.c
+++ b/src/video/SDL_blit_slow.c
@@ -105,15 +105,20 @@ void SDL_Blit_Slow(SDL_BlitInfo *info)
continue;
}
}
- if (FORMAT_HAS_ALPHA(dstfmt_val)) {
- DISEMBLE_RGBA(dst, dstbpp, dst_fmt, dstpixel, dstR, dstG, dstB, dstA);
- } else if (FORMAT_HAS_NO_ALPHA(dstfmt_val)) {
- DISEMBLE_RGB(dst, dstbpp, dst_fmt, dstpixel, dstR, dstG, dstB);
- dstA = 0xFF;
+ if ((flags & (SDL_COPY_BLEND | SDL_COPY_ADD | SDL_COPY_MOD | SDL_COPY_MUL))) {
+ if (FORMAT_HAS_ALPHA(dstfmt_val)) {
+ DISEMBLE_RGBA(dst, dstbpp, dst_fmt, dstpixel, dstR, dstG, dstB, dstA);
+ } else if (FORMAT_HAS_NO_ALPHA(dstfmt_val)) {
+ DISEMBLE_RGB(dst, dstbpp, dst_fmt, dstpixel, dstR, dstG, dstB);
+ dstA = 0xFF;
+ } else {
+ /* SDL_PIXELFORMAT_ARGB2101010 */
+ dstpixel = *((Uint32 *) (dst));
+ RGBA_FROM_ARGB2101010(dstpixel, dstR, dstG, dstB, dstA);
+ }
} else {
- /* SDL_PIXELFORMAT_ARGB2101010 */
- dstpixel = *((Uint32 *)(dst));
- RGBA_FROM_ARGB2101010(dstpixel, dstR, dstG, dstB, dstA);
+ /* don't care */
+ dstR = dstG = dstB = dstA = 0;
}
if (flags & SDL_COPY_MODULATE_COLOR) {