From 30782962263d21e984826aef616e25f4ec82de2d Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Mon, 1 May 2017 11:21:27 -0700 Subject: [PATCH] mesa: Add X1B5G5R5 along with A1B5G5R5. MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit For supporting RGB5 in hardware with A in the low bit (vc4), we need this format as well. v2: Add proper _mesa_format_matches_format_and_type() support (from Nicolai). Reviewed-by: Nicolai Hähnle (v1) --- src/mesa/main/formats.c | 5 +++++ src/mesa/main/formats.csv | 1 + src/mesa/main/formats.h | 1 + src/mesa/main/texformat.c | 1 + src/mesa/swrast/s_texfetch.c | 1 + 5 files changed, 9 insertions(+) diff --git a/src/mesa/main/formats.c b/src/mesa/main/formats.c index ecdfd561035..34450003572 100644 --- a/src/mesa/main/formats.c +++ b/src/mesa/main/formats.c @@ -875,6 +875,7 @@ _mesa_uncompressed_format_to_type_and_comps(mesa_format format, case MESA_FORMAT_A1B5G5R5_UNORM: case MESA_FORMAT_A1B5G5R5_UINT: + case MESA_FORMAT_X1B5G5R5_UNORM: *datatype = GL_UNSIGNED_SHORT_5_5_5_1; *comps = 4; return; @@ -1526,6 +1527,10 @@ _mesa_format_matches_format_and_type(mesa_format mesa_format, return format == GL_RGBA && type == GL_UNSIGNED_SHORT_5_5_5_1 && !swapBytes; + case MESA_FORMAT_X1B5G5R5_UNORM: + return format == GL_RGB && type == GL_UNSIGNED_SHORT_5_5_5_1 && + !swapBytes; + case MESA_FORMAT_B5G5R5A1_UNORM: return format == GL_BGRA && type == GL_UNSIGNED_SHORT_1_5_5_5_REV && !swapBytes; diff --git a/src/mesa/main/formats.csv b/src/mesa/main/formats.csv index 285921ed445..ce53f8f0561 100644 --- a/src/mesa/main/formats.csv +++ b/src/mesa/main/formats.csv @@ -68,6 +68,7 @@ MESA_FORMAT_B4G4R4A4_UNORM , packed, 1, 1, 1, un4 , un4 , un4 , u MESA_FORMAT_B4G4R4X4_UNORM , packed, 1, 1, 1, un4 , un4 , un4 , x4 , zyx1, rgb MESA_FORMAT_A4R4G4B4_UNORM , packed, 1, 1, 1, un4 , un4 , un4 , un4 , yzwx, rgb MESA_FORMAT_A1B5G5R5_UNORM , packed, 1, 1, 1, un1 , un5 , un5 , un5 , wzyx, rgb +MESA_FORMAT_X1B5G5R5_UNORM , packed, 1, 1, 1, x1 , un5 , un5 , un5 , wzy1, rgb MESA_FORMAT_B5G5R5A1_UNORM , packed, 1, 1, 1, un5 , un5 , un5 , un1 , zyxw, rgb MESA_FORMAT_B5G5R5X1_UNORM , packed, 1, 1, 1, un5 , un5 , un5 , x1 , zyx1, rgb MESA_FORMAT_A1R5G5B5_UNORM , packed, 1, 1, 1, un1 , un5 , un5 , un5 , yzwx, rgb diff --git a/src/mesa/main/formats.h b/src/mesa/main/formats.h index fbcbe36b71e..b81810fc893 100644 --- a/src/mesa/main/formats.h +++ b/src/mesa/main/formats.h @@ -350,6 +350,7 @@ typedef enum MESA_FORMAT_B4G4R4X4_UNORM, /* xxxx RRRR GGGG BBBB */ MESA_FORMAT_A4R4G4B4_UNORM, /* BBBB GGGG RRRR AAAA */ MESA_FORMAT_A1B5G5R5_UNORM, /* RRRR RGGG GGBB BBBA */ + MESA_FORMAT_X1B5G5R5_UNORM, /* BBBB BGGG GGRR RRRX */ MESA_FORMAT_B5G5R5A1_UNORM, /* ARRR RRGG GGGB BBBB */ MESA_FORMAT_B5G5R5X1_UNORM, /* xRRR RRGG GGGB BBBB */ MESA_FORMAT_A1R5G5B5_UNORM, /* BBBB BGGG GGRR RRRA */ diff --git a/src/mesa/main/texformat.c b/src/mesa/main/texformat.c index 13e77b77ecd..822f80f89ed 100644 --- a/src/mesa/main/texformat.c +++ b/src/mesa/main/texformat.c @@ -88,6 +88,7 @@ _mesa_choose_tex_format(struct gl_context *ctx, GLenum target, break; case GL_RGB5_A1: RETURN_IF_SUPPORTED(MESA_FORMAT_B5G5R5A1_UNORM); + RETURN_IF_SUPPORTED(MESA_FORMAT_A1B5G5R5_UNORM); break; case GL_RGBA2: RETURN_IF_SUPPORTED(MESA_FORMAT_A4R4G4B4_UNORM); /* just to test another format*/ diff --git a/src/mesa/swrast/s_texfetch.c b/src/mesa/swrast/s_texfetch.c index 4353ea0e471..e2c3c085b57 100644 --- a/src/mesa/swrast/s_texfetch.c +++ b/src/mesa/swrast/s_texfetch.c @@ -159,6 +159,7 @@ texfetch_funcs[] = FETCH_NULL(B4G4R4X4_UNORM), FETCH_FUNCS(A4R4G4B4_UNORM), FETCH_FUNCS(A1B5G5R5_UNORM), + FETCH_NULL(X1B5G5R5_UNORM), FETCH_FUNCS(B5G5R5A1_UNORM), FETCH_NULL(B5G5R5X1_UNORM), FETCH_FUNCS(A1R5G5B5_UNORM), -- 2.30.2