summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/iris
diff options
context:
space:
mode:
authorKenneth Graunke <[email protected]>2019-02-21 23:37:58 -0800
committerKenneth Graunke <[email protected]>2019-02-25 01:11:27 -0800
commitb45186a6cd0ed7539e427d4443671faef9f95058 (patch)
treee00142a7a6716b346a6cc059cbc0c0ae99c0d225 /src/gallium/drivers/iris
parentfce089c8a2d19480d65d217826a7399fc57019f8 (diff)
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
Diffstat (limited to 'src/gallium/drivers/iris')
-rw-r--r--src/gallium/drivers/iris/iris_formats.c11
1 files 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) {