From f418f4db3954814a2ac4c503c4eacdfe0649a56d Mon Sep 17 00:00:00 2001 From: adem482p Date: Thu, 8 Oct 2026 15:09:45 +0100 Subject: [PATCH] [rlsw] Coerce texture format to framebuffer format Fixes #5978 --- src/external/rlsw.h | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/external/rlsw.h b/src/external/rlsw.h index 6b7a09d43435..68639f34441a 100644 --- a/src/external/rlsw.h +++ b/src/external/rlsw.h @@ -4931,10 +4931,16 @@ void swTexStorage2D(int width, int height, SWinternalformat format) case SW_R32F: pixelFormat = SW_PIXELFORMAT_COLOR_R32; break; case SW_RGB32F: pixelFormat = SW_PIXELFORMAT_COLOR_R32G32B32; break; case SW_RGBA32F: pixelFormat = SW_PIXELFORMAT_COLOR_R32G32B32A32; break; - case SW_DEPTH_COMPONENT16: pixelFormat = SW_PIXELFORMAT_DEPTH_D16; break; - case SW_DEPTH_COMPONENT24: pixelFormat = SW_PIXELFORMAT_DEPTH_D32; break; - case SW_DEPTH_COMPONENT32: pixelFormat = SW_PIXELFORMAT_DEPTH_D32; break; - case SW_DEPTH_COMPONENT32F: pixelFormat = SW_PIXELFORMAT_DEPTH_D32; break; + case SW_DEPTH_COMPONENT16: + case SW_DEPTH_COMPONENT24: + case SW_DEPTH_COMPONENT32: + case SW_DEPTH_COMPONENT32F: + { + pixelFormat = SW_FRAMEBUFFER_DEPTH_FORMAT; + int requestedFormat = (format == SW_DEPTH_COMPONENT16)? SW_PIXELFORMAT_DEPTH_D16 : SW_PIXELFORMAT_DEPTH_D32; + if (requestedFormat != pixelFormat) SW_LOG("WARNING: RLSW: Coercing depth internalformat %d to framebuffer depth format\n", format); + break; + } default: RLSW.errCode = SW_INVALID_ENUM; return; }