iris: Properly allow rendering to RGBX formats.

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
This commit is contained in:
Kenneth Graunke 2019-02-21 23:37:58 -08:00
parent fce089c8a2
commit b45186a6cd

View file

@ -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) {