From 74a926dd9c44b163809ead6e36b33d67e7e03367 Mon Sep 17 00:00:00 2001 From: assiduous Date: Sat, 16 Sep 2023 16:51:51 -0700 Subject: [PATCH] SwapChainGL: correct color format if sRGB framebuffers are not enabled --- .../GraphicsEngineOpenGL/src/SwapChainGLImpl.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/Graphics/GraphicsEngineOpenGL/src/SwapChainGLImpl.cpp b/Graphics/GraphicsEngineOpenGL/src/SwapChainGLImpl.cpp index d935329359..c833878c75 100644 --- a/Graphics/GraphicsEngineOpenGL/src/SwapChainGLImpl.cpp +++ b/Graphics/GraphicsEngineOpenGL/src/SwapChainGLImpl.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2019-2022 Diligent Graphics LLC + * Copyright 2019-2023 Diligent Graphics LLC * Copyright 2015-2019 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -50,6 +50,19 @@ SwapChainGLImpl::SwapChainGLImpl(IReferenceCounters* pRefCounters, } // clang-format on { + if (m_SwapChainDesc.ColorBufferFormat == TEX_FORMAT_RGBA8_UNORM_SRGB || + m_SwapChainDesc.ColorBufferFormat == TEX_FORMAT_BGRA8_UNORM_SRGB) + { + if (glIsEnabled(GL_FRAMEBUFFER_SRGB) == GL_FALSE) + { + auto ColorFmt = m_SwapChainDesc.ColorBufferFormat == TEX_FORMAT_RGBA8_UNORM_SRGB ? + TEX_FORMAT_RGBA8_UNORM : + TEX_FORMAT_BGRA8_UNORM; + LOG_WARNING_MESSAGE("Changing swap chain color format to ", GetTextureFormatAttribs(ColorFmt).Name, " because sRGB framebuffers are not enabled."); + m_SwapChainDesc.ColorBufferFormat = ColorFmt; + } + } + if (m_DesiredPreTransform != SURFACE_TRANSFORM_OPTIMAL && m_DesiredPreTransform != SURFACE_TRANSFORM_IDENTITY) {