[Mesa-dev] [PATCH 7/9] softpipe: don't use 3-component formats
Brian Paul
brianp at vmware.com
Mon Aug 24 16:04:28 PDT 2015
Mesa and gallium don't have a complete set of matching 3-component
texture formats. For example, 8-bit sRGB unorm. To fully support
the GL_ARB_copy_image extension we need to have support for all of
these formats: RGB8_UNORM, RGB8_SNORM, RGB8_SRGB, RGB8_UINT, and
RGB8_SINT using the same component order. Since we don't have that,
disable the 3-component formats for now.
---
src/gallium/drivers/softpipe/sp_screen.c | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)
diff --git a/src/gallium/drivers/softpipe/sp_screen.c b/src/gallium/drivers/softpipe/sp_screen.c
index aeef8e6..24d79f1 100644
--- a/src/gallium/drivers/softpipe/sp_screen.c
+++ b/src/gallium/drivers/softpipe/sp_screen.c
@@ -360,6 +360,31 @@ softpipe_is_format_supported( struct pipe_screen *screen,
return FALSE;
}
+ if ((bind & (PIPE_BIND_RENDER_TARGET | PIPE_BIND_SAMPLER_VIEW)) &&
+ ((bind & PIPE_BIND_DISPLAY_TARGET) == 0)) {
+ if (format == PIPE_FORMAT_R8G8B8_UINT ||
+ format == PIPE_FORMAT_R8G8B8_SINT ||
+ format == PIPE_FORMAT_R8G8B8_UNORM ||
+ format == PIPE_FORMAT_R16G16B16_UINT ||
+ format == PIPE_FORMAT_R16G16B16_SINT ||
+ format == PIPE_FORMAT_R16G16B16_UNORM ||
+ format == PIPE_FORMAT_R16G16B16_FLOAT ||
+ format == PIPE_FORMAT_R32G32B32_UINT ||
+ format == PIPE_FORMAT_R32G32B32_SINT ||
+ format == PIPE_FORMAT_R32G32B32_UNORM ||
+ format == PIPE_FORMAT_R32G32B32_FLOAT) {
+ /* Don't support any 3-component formats for rendering/texturing
+ * since we don't support the corresponding 8-bit 3 channel UNORM
+ * formats. This allows us to support GL_ARB_copy_image between
+ * GL_RGB8 and GL_RGB8UI, for example. Otherwise, we may be asked to
+ * do a resource copy between PIPE_FORMAT_R8G8B8_UINT and
+ * PIPE_FORMAT_R8G8B8X8_UNORM, for example, which will not work
+ * (different bpp).
+ */
+ return FALSE;
+ }
+ }
+
if (format_desc->layout == UTIL_FORMAT_LAYOUT_ETC &&
format != PIPE_FORMAT_ETC1_RGB8)
return FALSE;
--
1.9.1
More information about the mesa-dev
mailing list