From 9cdd9ec11628a3efacbf732e8447d56912f8112d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tapani=20P=C3=A4lli?= Date: Thu, 15 Jan 2015 15:58:51 +0200 Subject: [PATCH v2] mesa: support GL_RGB for GL_EXT_texture_type_2_10_10_10_REV MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Commit 8ec6534 changed texture upload path and the way how texture format is being checked, this commit adds support for GL_RGB with GL_UNSIGNED_INT_2_10_10_10_REV as specified by the extension EXT_texture_type_2_10_10_10_REV specification. This fixes regression in ES3 conformance test ES3-CTS.gtf.GL3Tests.packed_pixels.packed_pixels v2: add MESA_FORMAT_R10G10B10X2_UNORM format (Iago Toral) Signed-off-by: Tapani Pälli Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=88385 --- src/mesa/main/formats.c | 4 ++++ src/mesa/main/formats.csv | 1 + src/mesa/main/formats.h | 1 + src/mesa/main/glformats.c | 2 ++ src/mesa/swrast/s_texfetch.c | 2 ++ 5 files changed, 10 insertions(+) diff --git a/src/mesa/main/formats.c b/src/mesa/main/formats.c index 8ac0583..27c169a 100644 --- a/src/mesa/main/formats.c +++ b/src/mesa/main/formats.c @@ -972,6 +972,7 @@ _mesa_format_to_type_and_comps(mesa_format format, return; case MESA_FORMAT_B10G10R10A2_UNORM: + case MESA_FORMAT_R10G10B10X2_UNORM: *datatype = GL_UNSIGNED_INT_2_10_10_10_REV; *comps = 4; return; @@ -1726,6 +1727,9 @@ _mesa_format_matches_format_and_type(mesa_format mesa_format, case MESA_FORMAT_A2R10G10B10_UNORM: return format == GL_BGRA && type == GL_UNSIGNED_INT_10_10_10_2; + case MESA_FORMAT_R10G10B10X2_UNORM: + return format == GL_RGB && type == GL_UNSIGNED_INT_2_10_10_10_REV; + case MESA_FORMAT_A2R10G10B10_UINT: return format == GL_BGRA_INTEGER_EXT && type == GL_UNSIGNED_INT_10_10_10_2; diff --git a/src/mesa/main/formats.csv b/src/mesa/main/formats.csv index 15d82aa..e159e7d 100644 --- a/src/mesa/main/formats.csv +++ b/src/mesa/main/formats.csv @@ -82,6 +82,7 @@ MESA_FORMAT_G16R16_UNORM , packed, 1, 1, un16, un16, , MESA_FORMAT_B10G10R10A2_UNORM , packed, 1, 1, un10, un10, un10, un2 , zyxw, rgb MESA_FORMAT_B10G10R10X2_UNORM , packed, 1, 1, un10, un10, un10, x2 , zyx1, rgb MESA_FORMAT_R10G10B10A2_UNORM , packed, 1, 1, un10, un10, un10, un2 , xyzw, rgb +MESA_FORMAT_R10G10B10X2_UNORM , packed, 1, 1, un10, un10, un10, x2 , xyz1, rgb MESA_FORMAT_S8_UINT_Z24_UNORM , packed, 1, 1, un24, u8 , , , xy__, zs MESA_FORMAT_X8_UINT_Z24_UNORM , packed, 1, 1, un24, x8 , , , x___, zs diff --git a/src/mesa/main/formats.h b/src/mesa/main/formats.h index 09890ec..7e451ca 100644 --- a/src/mesa/main/formats.h +++ b/src/mesa/main/formats.h @@ -352,6 +352,7 @@ typedef enum MESA_FORMAT_B10G10R10A2_UNORM,/* AARR RRRR RRRR GGGG GGGG GGBB BBBB BBBB */ MESA_FORMAT_B10G10R10X2_UNORM,/* xxRR RRRR RRRR GGGG GGGG GGBB BBBB BBBB */ MESA_FORMAT_R10G10B10A2_UNORM,/* AABB BBBB BBBB GGGG GGGG GGRR RRRR RRRR */ + MESA_FORMAT_R10G10B10X2_UNORM,/* xxBB BBBB BBBB GGGG GGGG GGRR RRRR RRRR */ MESA_FORMAT_S8_UINT_Z24_UNORM,/* ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ SSSS SSSS */ MESA_FORMAT_X8_UINT_Z24_UNORM,/* ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ xxxx xxxx */ diff --git a/src/mesa/main/glformats.c b/src/mesa/main/glformats.c index 3e913ed..06f9aaf 100644 --- a/src/mesa/main/glformats.c +++ b/src/mesa/main/glformats.c @@ -2666,6 +2666,8 @@ _mesa_format_from_format_and_type(GLenum format, GLenum type) return MESA_FORMAT_A2R10G10B10_UINT; break; case GL_UNSIGNED_INT_2_10_10_10_REV: + if (format == GL_RGB) + return MESA_FORMAT_R10G10B10X2_UNORM; if (format == GL_RGBA) return MESA_FORMAT_R10G10B10A2_UNORM; else if (format == GL_RGBA_INTEGER) diff --git a/src/mesa/swrast/s_texfetch.c b/src/mesa/swrast/s_texfetch.c index a0f34fd..9629024 100644 --- a/src/mesa/swrast/s_texfetch.c +++ b/src/mesa/swrast/s_texfetch.c @@ -166,6 +166,8 @@ texfetch_funcs[] = FETCH_FUNCS(B10G10R10A2_UNORM), FETCH_NULL(B10G10R10X2_UNORM), FETCH_FUNCS(R10G10B10A2_UNORM), + FETCH_NULL(R10G10B10X2_UNORM), + FETCH_FUNCS(S8_UINT_Z24_UNORM), { MESA_FORMAT_X8_UINT_Z24_UNORM, -- 1.9.3