From b45186a6cd0ed7539e427d4443671faef9f95058 Mon Sep 17 00:00:00 2001 From: Kenneth Graunke Date: Thu, 21 Feb 2019 23:37:58 -0800 Subject: [PATCH] iris: Properly allow rendering to RGBX formats. MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit I was converting them at pipe_surface creation time, but not when answering queries about whether formats support rendering. This caused a lot of FBO incomplete errors for formats that ought to be supported. Fixes "Child of Light", which uses PIPE_FORMAT_R8G8B8X8_UNORM_SRGB. Also fixes Witcher 1 using wined3d (GL) according to Timur Kristóf. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=109738 --- src/gallium/drivers/iris/iris_formats.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/gallium/drivers/iris/iris_formats.c b/src/gallium/drivers/iris/iris_formats.c index 8a53bc19f3f..c160d19f4ea 100644 --- a/src/gallium/drivers/iris/iris_formats.c +++ b/src/gallium/drivers/iris/iris_formats.c @@ -427,9 +427,16 @@ iris_is_format_supported(struct pipe_screen *pscreen, } if (usage & PIPE_BIND_RENDER_TARGET) { - supported &= isl_format_supports_rendering(devinfo, format); + enum isl_format rt_format = format; + + if (isl_format_is_rgbx(format) && + !isl_format_supports_rendering(devinfo, format)) + rt_format = isl_format_rgbx_to_rgba(format); + + supported &= isl_format_supports_rendering(devinfo, rt_format); + if (!is_integer) - supported &= isl_format_supports_alpha_blending(devinfo, format); + supported &= isl_format_supports_alpha_blending(devinfo, rt_format); } if (usage & PIPE_BIND_SHADER_IMAGE) { -- 2.30.2