From ef11d5fc8bb7be56d6afa3f980323cf082ee5c16 Mon Sep 17 00:00:00 2001 From: Ilia Mirkin Date: Mon, 18 May 2020 14:00:58 -0400 Subject: [PATCH] st/mesa: allow R8 to not be exposed as renderable by driver MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit A3xx GPUs support RG8 and RGBA8, but not R8 for rendering. Add RG8 as fallbacks for integer formats, and require a renderable format to be picked for all R8 variants. Signed-off-by: Ilia Mirkin Reviewed-by: Marek Olšák Part-of: --- src/mesa/state_tracker/st_format.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/mesa/state_tracker/st_format.c b/src/mesa/state_tracker/st_format.c index 22da741472a..c84dd7b324d 100644 --- a/src/mesa/state_tracker/st_format.c +++ b/src/mesa/state_tracker/st_format.c @@ -910,7 +910,7 @@ static const struct format_mapping format_map[] = { }, { { GL_R8I, GL_RED_INTEGER_EXT, 0}, - { PIPE_FORMAT_R8_SINT, 0}, + { PIPE_FORMAT_R8_SINT, PIPE_FORMAT_R8G8_SINT, 0}, }, { { GL_R16I, 0}, @@ -922,7 +922,7 @@ static const struct format_mapping format_map[] = { }, { { GL_R8UI, 0}, - { PIPE_FORMAT_R8_UINT, 0}, + { PIPE_FORMAT_R8_UINT, PIPE_FORMAT_R8G8_UINT, 0}, }, { { GL_R16UI, 0}, @@ -1281,7 +1281,11 @@ st_ChooseTextureFormat(struct gl_context *ctx, GLenum target, internalFormat == GL_RGB16F || internalFormat == GL_RGBA16F || internalFormat == GL_RGB32F || - internalFormat == GL_RGBA32F) + internalFormat == GL_RGBA32F || + internalFormat == GL_RED || + internalFormat == GL_RED_SNORM || + internalFormat == GL_R8I || + internalFormat == GL_R8UI) bindings |= PIPE_BIND_RENDER_TARGET; /* GLES allows the driver to choose any format which matches -- 2.30.2