From 386586835851c586c5482b73898b5eb7249d7670 Mon Sep 17 00:00:00 2001 From: Sasha Szpakowski Date: Fri, 13 Oct 2023 21:41:32 -0300 Subject: [PATCH] Fix creating a linear rgba8 canvas when gamma correct rendering is on. Fixes #1973 --- src/modules/graphics/Texture.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/modules/graphics/Texture.cpp b/src/modules/graphics/Texture.cpp index e9b7ab1f7..d70bf1d8b 100644 --- a/src/modules/graphics/Texture.cpp +++ b/src/modules/graphics/Texture.cpp @@ -168,7 +168,7 @@ Texture::Texture(Graphics *gfx, const Settings &settings, const Slices *slices) , computeWrite(settings.computeWrite) , readable(true) , mipmapsMode(settings.mipmaps) - , sRGB(isGammaCorrect() && !settings.linear) + , sRGB(false) , width(settings.width) , height(settings.height) , depth(settings.type == TEXTURE_VOLUME ? settings.layers : 1) @@ -204,7 +204,7 @@ Texture::Texture(Graphics *gfx, const Settings &settings, const Slices *slices) love::image::ImageDataBase *slice = slices->get(0, 0); format = slice->getFormat(); - if (sRGB) + if (isGammaCorrect() && !settings.linear) format = getSRGBPixelFormat(format); pixelWidth = slice->getWidth(); @@ -236,6 +236,7 @@ Texture::Texture(Graphics *gfx, const Settings &settings, const Slices *slices) readable = !renderTarget || !isPixelFormatDepthStencil(format); format = gfx->getSizedFormat(format, renderTarget, readable); + sRGB = isPixelFormatSRGB(format) || (isCompressed() && isGammaCorrect() && !settings.linear); if (mipmapsMode == MIPMAPS_AUTO && isCompressed()) mipmapsMode = MIPMAPS_MANUAL;