r15657 - in packages/trunk/supertuxkart/debian: . patches

Vincent Cheng vcheng at moszumanska.debian.org
Wed Dec 23 21:09:18 UTC 2015


Author: vcheng
Date: 2015-12-23 21:09:18 +0000 (Wed, 23 Dec 2015)
New Revision: 15657

Added:
   packages/trunk/supertuxkart/debian/patches/srgb_workaround.patch
Modified:
   packages/trunk/supertuxkart/debian/changelog
   packages/trunk/supertuxkart/debian/patches/series
Log:
supertuxkart: add srgb_workaround.patch


Modified: packages/trunk/supertuxkart/debian/changelog
===================================================================
--- packages/trunk/supertuxkart/debian/changelog	2015-12-23 06:15:19 UTC (rev 15656)
+++ packages/trunk/supertuxkart/debian/changelog	2015-12-23 21:09:18 UTC (rev 15657)
@@ -1,3 +1,11 @@
+supertuxkart (0.9.1-3) unstable; urgency=medium
+
+  * Add srgb_workaround.patch to provide workaround for darker screens on
+    Intel GPUs with mesa >= 10.6. (Closes: #808857) More info upstream at:
+    https://github.com/supertuxkart/stk-code/issues/2190
+
+ -- Vincent Cheng <vcheng at debian.org>  Wed, 23 Dec 2015 13:07:40 -0800
+
 supertuxkart (0.9.1-2) unstable; urgency=medium
 
   * Fix fix_angelscript_build_on_non-x86_arches.patch to fix FTBFS on armhf.

Modified: packages/trunk/supertuxkart/debian/patches/series
===================================================================
--- packages/trunk/supertuxkart/debian/patches/series	2015-12-23 06:15:19 UTC (rev 15656)
+++ packages/trunk/supertuxkart/debian/patches/series	2015-12-23 21:09:18 UTC (rev 15657)
@@ -2,6 +2,7 @@
 link_against_system_libs.patch
 remove_irrlicht_embedded_libs.patch
 fix_angelscript_build_on_non-x86_arches.patch
+srgb_workaround.patch
 # Irrlicht patches taken directly from irrlicht source package in Debian
 irrlicht/arch-support.diff
 irrlicht/use-system-libs.diff

Added: packages/trunk/supertuxkart/debian/patches/srgb_workaround.patch
===================================================================
--- packages/trunk/supertuxkart/debian/patches/srgb_workaround.patch	                        (rev 0)
+++ packages/trunk/supertuxkart/debian/patches/srgb_workaround.patch	2015-12-23 21:09:18 UTC (rev 15657)
@@ -0,0 +1,168 @@
+Description: Workaround for darker screen on Intel GPUs with mesa >= 10.6
+Origin: upstream, https://github.com/supertuxkart/stk-code/issues/2190
+Bug-Debian: https://bugs.debian.org/808857
+Last-Update: 2015-12-23
+
+diff --git a/data/graphical_restrictions.xml b/data/graphical_restrictions.xml
+index 16bb607..b2480dc 100644
+--- a/data/graphical_restrictions.xml
++++ b/data/graphical_restrictions.xml
+@@ -4,6 +4,7 @@
+   <card is="Intel(R) HD Graphics 3000" os="windows"                disable="AdvancedPipeline"/>
+   <card is="Intel(R) HD Graphics 3000" os="windows"                disable="FramebufferSRGBWorking"/>
+   <card contains="Intel"          os="osx"                         disable="GI"/>
++  <card contains="Intel"          os="linux"                       disable="FramebufferSRGBCapable"/>
+   <card contains="Intel"                                           disable="TextureCompressionS3TC"/>
+   <card contains="Intel"          os="windows"                     disable="HighDefinitionTextures"/>
+   <card contains="NVIDIA"         os="windows"  version="<344.65"  disable="BufferStorage"/>
+diff --git a/src/graphics/central_settings.cpp b/src/graphics/central_settings.cpp
+index 719e7f4..2eace45 100644
+--- a/src/graphics/central_settings.cpp
++++ b/src/graphics/central_settings.cpp
+@@ -46,10 +46,11 @@ void CentralVideoSettings::init()
+     hasTextureCompression = false;
+     hasUBO = false;
+     hasGS = false;
+-    m_GI_has_artifact = false;
+ 
++    m_GI_has_artifact = false;
+     m_need_rh_workaround = false;
+     m_need_srgb_workaround = false;
++    m_need_srgb_visual_workaround = false;
+ 
+     // Call to glGetIntegerv should not be made if --no-graphics is used
+     if (!ProfileWorld::isNoGraphics())
+@@ -179,6 +180,16 @@ void CentralVideoSettings::init()
+             // Bindless textures are all treated RGB even sRGB one
+             m_need_srgb_workaround = true;
+         }
++
++        // Check if visual is sRGB-capable
++        if (GraphicsRestrictions::isDisabled(GraphicsRestrictions::GR_FRAMEBUFFER_SRGB_CAPABLE) &&
++            m_glsl == true)
++        {
++            GLint param = GL_SRGB;
++            glGetFramebufferAttachmentParameteriv(GL_DRAW_FRAMEBUFFER, GL_BACK_LEFT,
++                              GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING, &param);
++            m_need_srgb_visual_workaround = (param != GL_SRGB);
++        }
+     }
+ }
+ 
+@@ -207,6 +218,11 @@ bool CentralVideoSettings::needsRGBBindlessWorkaround() const
+     return m_need_srgb_workaround;
+ }
+ 
++bool CentralVideoSettings::needsSRGBCapableVisualWorkaround() const
++{
++    return m_need_srgb_visual_workaround;
++}
++
+ bool CentralVideoSettings::isARBGeometryShader4Usable() const
+ {
+     return hasGS;
+diff --git a/src/graphics/central_settings.hpp b/src/graphics/central_settings.hpp
+index dbde9c6..c9a5bbe 100644
+--- a/src/graphics/central_settings.hpp
++++ b/src/graphics/central_settings.hpp
+@@ -43,6 +43,7 @@ private:
+ 
+     bool m_need_rh_workaround;
+     bool m_need_srgb_workaround;
++    bool m_need_srgb_visual_workaround;
+     bool m_GI_has_artifact;
+ public:
+     void init();
+@@ -52,6 +53,7 @@ public:
+     // Needs special handle ?
+     bool needRHWorkaround() const;
+     bool needsRGBBindlessWorkaround() const;
++    bool needsSRGBCapableVisualWorkaround() const;
+ 
+     // Extension is available and safe to use
+     bool isARBUniformBufferObjectUsable() const;
+diff --git a/src/graphics/graphics_restrictions.cpp b/src/graphics/graphics_restrictions.cpp
+index 7d132ea..83c6ded 100644
+--- a/src/graphics/graphics_restrictions.cpp
++++ b/src/graphics/graphics_restrictions.cpp
+@@ -59,6 +59,7 @@ namespace GraphicsRestrictions
+             "HighDefinitionTextures",
+             "AdvancedPipeline",
+             "FramebufferSRGBWorking",
++            "FramebufferSRGBCapable",
+             "GI",
+         };
+     }   // namespace Private
+diff --git a/src/graphics/graphics_restrictions.hpp b/src/graphics/graphics_restrictions.hpp
+index ab44ce9..faf5151 100644
+--- a/src/graphics/graphics_restrictions.hpp
++++ b/src/graphics/graphics_restrictions.hpp
+@@ -53,6 +53,7 @@ namespace GraphicsRestrictions
+         GR_HIGHDEFINITION_TEXTURES,
+         GR_ADVANCED_PIPELINE,
+         GR_FRAMEBUFFER_SRGB_WORKING,
++        GR_FRAMEBUFFER_SRGB_CAPABLE,
+         GR_GI,
+         GR_COUNT  /** MUST be last entry. */
+     } ;
+diff --git a/src/graphics/irr_driver.cpp b/src/graphics/irr_driver.cpp
+index e736293..8bbb3c3 100644
+--- a/src/graphics/irr_driver.cpp
++++ b/src/graphics/irr_driver.cpp
+@@ -344,6 +344,8 @@ void IrrDriver::createListOfVideoModes()
+  */
+ void IrrDriver::initDevice()
+ {
++    SIrrlichtCreationParameters params;
++    
+     // If --no-graphics option was used, the null device can still be used.
+     if (!ProfileWorld::isNoGraphics())
+     {
+@@ -426,7 +428,6 @@ void IrrDriver::initDevice()
+         m_device->drop();
+         m_device  = NULL;
+ 
+-        SIrrlichtCreationParameters params;
+         params.ForceLegacyDevice = (UserConfigParams::m_force_legacy_device || 
+             UserConfigParams::m_gamepad_visualisation);
+ 
+@@ -505,6 +506,30 @@ void IrrDriver::initDevice()
+     {
+         Log::fatal("irr_driver", "Couldn't initialise irrlicht device. Quitting.\n");
+     }
++    
++    CVS->init();
++                    
++    // This is the ugly hack for intel driver on linux, which doesn't
++    // use sRGB-capable visual, even if we request it. This causes
++    // the screen to be darker than expected. It affects mesa 10.6 and newer. 
++    // Though we are able to force to use the proper format on mesa side by 
++    // setting WithAlphaChannel parameter.
++    if (!ProfileWorld::isNoGraphics() && CVS->needsSRGBCapableVisualWorkaround())
++    {
++        Log::warn("irr_driver", "Created visual is not sRGB-capable. "
++                                "Re-creating device to workaround the issue.");
++        m_device->closeDevice();
++        m_device->drop();
++
++        params.WithAlphaChannel = true;
++        
++        m_device = createDeviceEx(params);
++        
++        if(!m_device)
++        {
++            Log::fatal("irr_driver", "Couldn't initialise irrlicht device. Quitting.\n");
++        }
++    }
+ 
+     m_scene_manager = m_device->getSceneManager();
+     m_gui_env       = m_device->getGUIEnvironment();
+@@ -513,8 +538,6 @@ void IrrDriver::initDevice()
+ 
+     m_actual_screen_size = m_video_driver->getCurrentRenderTargetSize();
+ 
+-    CVS->init();
+-
+     m_spherical_harmonics = new SphericalHarmonics(m_scene_manager->getAmbientLight().toSColor());
+ 
+     if (UserConfigParams::m_shadows_resolution != 0 &&




More information about the Pkg-games-commits mailing list