Hmm I guess we can't convert it to something else when we don't have a matching MESA_FORMAT?
Roland Am 30.07.2015 um 03:48 schrieb Dave Airlie: > From: Dave Airlie <airl...@redhat.com> > > GL3.3 added GL_ARB_texture_rgb10_a2ui, which specifies > a lot more things than just rgb10/a2ui. > > While playing with ogl conform one of the tests must > attempted all valid formats for GL3.3 and hits the > unreachable here. > > This adds the first chunk of formats that hit the > assert. > > Signed-off-by: Dave Airlie <airl...@redhat.com> > --- > src/mesa/main/formats.c | 63 > +++++++++++++++++++++++++++++++++++++++++++++++ > src/mesa/main/formats.csv | 12 +++++++++ > src/mesa/main/formats.h | 12 +++++++++ > src/mesa/main/glformats.c | 24 ++++++++++++++++++ > 4 files changed, 111 insertions(+) > > diff --git a/src/mesa/main/formats.c b/src/mesa/main/formats.c > index baeb1bf..872f18b 100644 > --- a/src/mesa/main/formats.c > +++ b/src/mesa/main/formats.c > @@ -1008,6 +1008,8 @@ _mesa_format_to_type_and_comps(mesa_format format, > return; > case MESA_FORMAT_B5G6R5_UNORM: > case MESA_FORMAT_R5G6B5_UNORM: > + case MESA_FORMAT_B5G6R5_UINT: > + case MESA_FORMAT_R5G6B5_UINT: > *datatype = GL_UNSIGNED_SHORT_5_6_5; > *comps = 3; > return; > @@ -1015,6 +1017,8 @@ _mesa_format_to_type_and_comps(mesa_format format, > case MESA_FORMAT_B4G4R4A4_UNORM: > case MESA_FORMAT_A4R4G4B4_UNORM: > case MESA_FORMAT_B4G4R4X4_UNORM: > + case MESA_FORMAT_B4G4R4A4_UINT: > + case MESA_FORMAT_A4R4G4B4_UINT: > *datatype = GL_UNSIGNED_SHORT_4_4_4_4; > *comps = 4; > return; > @@ -1022,6 +1026,8 @@ _mesa_format_to_type_and_comps(mesa_format format, > case MESA_FORMAT_B5G5R5A1_UNORM: > case MESA_FORMAT_A1R5G5B5_UNORM: > case MESA_FORMAT_B5G5R5X1_UNORM: > + case MESA_FORMAT_B5G5R5A1_UINT: > + case MESA_FORMAT_A1R5G5B5_UINT: > *datatype = GL_UNSIGNED_SHORT_1_5_5_5_REV; > *comps = 4; > return; > @@ -1032,6 +1038,7 @@ _mesa_format_to_type_and_comps(mesa_format format, > return; > > case MESA_FORMAT_A1B5G5R5_UNORM: > + case MESA_FORMAT_A1B5G5R5_UINT: > *datatype = GL_UNSIGNED_SHORT_5_5_5_1; > *comps = 4; > return; > @@ -1066,19 +1073,23 @@ _mesa_format_to_type_and_comps(mesa_format format, > return; > > case MESA_FORMAT_R3G3B2_UNORM: > + case MESA_FORMAT_R3G3B2_UINT: > *datatype = GL_UNSIGNED_BYTE_2_3_3_REV; > *comps = 3; > return; > case MESA_FORMAT_A4B4G4R4_UNORM: > + case MESA_FORMAT_A4B4G4R4_UINT: > *datatype = GL_UNSIGNED_SHORT_4_4_4_4; > *comps = 4; > return; > > case MESA_FORMAT_R4G4B4A4_UNORM: > + case MESA_FORMAT_R4G4B4A4_UINT: > *datatype = GL_UNSIGNED_SHORT_4_4_4_4; > *comps = 4; > return; > case MESA_FORMAT_R5G5B5A1_UNORM: > + case MESA_FORMAT_R5G5B5A1_UINT: > *datatype = GL_UNSIGNED_SHORT_1_5_5_5_REV; > *comps = 4; > return; > @@ -1094,6 +1105,7 @@ _mesa_format_to_type_and_comps(mesa_format format, > return; > > case MESA_FORMAT_B2G3R3_UNORM: > + case MESA_FORMAT_B2G3R3_UINT: > *datatype = GL_UNSIGNED_BYTE_3_3_2; > *comps = 3; > return; > @@ -2123,6 +2135,57 @@ _mesa_format_matches_format_and_type(mesa_format > mesa_format, > type == GL_UNSIGNED_INT_2_10_10_10_REV && > !swapBytes); > > + case MESA_FORMAT_B5G6R5_UINT: > + return format == GL_RGB_INTEGER && type == GL_UNSIGNED_SHORT_5_6_5; > + > + case MESA_FORMAT_R5G6B5_UINT: > + return format == GL_RGB_INTEGER && type == GL_UNSIGNED_SHORT_5_6_5_REV; > + > + case MESA_FORMAT_B2G3R3_UINT: > + return format == GL_RGB_INTEGER && type == GL_UNSIGNED_BYTE_3_3_2; > + > + case MESA_FORMAT_R3G3B2_UINT: > + return format == GL_RGB_INTEGER && type == GL_UNSIGNED_BYTE_2_3_3_REV; > + > + case MESA_FORMAT_A4B4G4R4_UINT: > + if (format == GL_RGBA_INTEGER && type == GL_UNSIGNED_SHORT_4_4_4_4 && > !swapBytes) > + return GL_TRUE; > + > + if (format == GL_RGBA_INTEGER && type == GL_UNSIGNED_SHORT_4_4_4_4_REV > && swapBytes) > + return GL_TRUE; > + return GL_FALSE; > + > + case MESA_FORMAT_R4G4B4A4_UINT: > + if (format == GL_RGBA_INTEGER && type == GL_UNSIGNED_SHORT_4_4_4_4_REV > && !swapBytes) > + return GL_TRUE; > + > + if (format == GL_RGBA_INTEGER && type == GL_UNSIGNED_SHORT_4_4_4_4 && > swapBytes) > + return GL_TRUE; > + > + return GL_FALSE; > + > + case MESA_FORMAT_B4G4R4A4_UINT: > + return format == GL_BGRA_INTEGER && type == > GL_UNSIGNED_SHORT_4_4_4_4_REV && > + !swapBytes; > + > + case MESA_FORMAT_A4R4G4B4_UINT: > + return GL_FALSE; > + > + case MESA_FORMAT_A1B5G5R5_UINT: > + return format == GL_RGBA_INTEGER && type == GL_UNSIGNED_SHORT_5_5_5_1 > && > + !swapBytes; > + > + case MESA_FORMAT_B5G5R5A1_UINT: > + return format == GL_BGRA_INTEGER && type == > GL_UNSIGNED_SHORT_1_5_5_5_REV && > + !swapBytes; > + > + case MESA_FORMAT_A1R5G5B5_UINT: > + return format == GL_BGRA_INTEGER && type == GL_UNSIGNED_SHORT_5_5_5_1 > && > + !swapBytes; > + > + case MESA_FORMAT_R5G5B5A1_UINT: > + return format == GL_RGBA_INTEGER && type == > GL_UNSIGNED_SHORT_1_5_5_5_REV; > + > case MESA_FORMAT_R9G9B9E5_FLOAT: > return format == GL_RGB && type == GL_UNSIGNED_INT_5_9_9_9_REV && > !swapBytes; > diff --git a/src/mesa/main/formats.csv b/src/mesa/main/formats.csv > index e159e7d..d30b0a9 100644 > --- a/src/mesa/main/formats.csv > +++ b/src/mesa/main/formats.csv > @@ -190,6 +190,18 @@ MESA_FORMAT_B10G10R10A2_UINT , packed, 1, > 1, u10 , u10 , u10 , u2 > MESA_FORMAT_R10G10B10A2_UINT , packed, 1, 1, u10 , u10 , u10 , > u2 , xyzw, rgb > MESA_FORMAT_A2B10G10R10_UINT , packed, 1, 1, u2 , u10 , u10 , > u10 , wzyx, rgb > MESA_FORMAT_A2R10G10B10_UINT , packed, 1, 1, u2 , u10 , u10 , > u10 , yzwx, rgb > +MESA_FORMAT_B5G6R5_UINT , packed, 1, 1, u5 , u6 , u5 , > , zyx1, rgb > +MESA_FORMAT_R5G6B5_UINT , packed, 1, 1, u5 , u6 , u5 , > , xyz1, rgb > +MESA_FORMAT_B2G3R3_UINT , packed, 1, 1, u2 , u3 , u3 , > , zyx1, rgb > +MESA_FORMAT_R3G3B2_UINT , packed, 1, 1, u3 , u3 , u2 , > , xyz1, rgb > +MESA_FORMAT_A4B4G4R4_UINT , packed, 1, 1, u4 , u4 , u4 , > u4 , wzyx, rgb > +MESA_FORMAT_R4G4B4A4_UINT , packed, 1, 1, u4 , u4 , u4 , > u4 , xyzw, rgb > +MESA_FORMAT_B4G4R4A4_UINT , packed, 1, 1, u4 , u4 , u4 , > u4 , zyxw, rgb > +MESA_FORMAT_A4R4G4B4_UINT , packed, 1, 1, u4 , u4 , u4 , > u4 , yzwx, rgb > +MESA_FORMAT_A1B5G5R5_UINT , packed, 1, 1, u1 , u5 , u5 , > u5 , wzyx, rgb > +MESA_FORMAT_B5G5R5A1_UINT , packed, 1, 1, u5 , u5 , u5 , > u1 , zyxw, rgb > +MESA_FORMAT_A1R5G5B5_UINT , packed, 1, 1, u1 , u5 , u5 , > u5 , yzwx, rgb > +MESA_FORMAT_R5G5B5A1_UINT , packed, 1, 1, u5 , u5 , u5 , > u1 , xyzw, rgb > > # Array signed/unsigned non-normalized integer formats > MESA_FORMAT_A_UINT8 , array , 1, 1, u8 , , , > , 000x, rgb > diff --git a/src/mesa/main/formats.h b/src/mesa/main/formats.h > index 7e451ca..766c839 100644 > --- a/src/mesa/main/formats.h > +++ b/src/mesa/main/formats.h > @@ -463,6 +463,18 @@ typedef enum > MESA_FORMAT_R10G10B10A2_UINT, /* AABB BBBB BBBB GGGG GGGG GGRR RRRR RRRR > */ > MESA_FORMAT_A2B10G10R10_UINT, /* RRRR RRRR RRGG GGGG GGGG BBBB BBBB BBAA > */ > MESA_FORMAT_A2R10G10B10_UINT, /* BBBB BBBB BBGG GGGG GGGG RRRR RRRR RRAA > */ > + MESA_FORMAT_B5G6R5_UINT, /* RRRR RGGG GGGB BBBB > */ > + MESA_FORMAT_R5G6B5_UINT, /* BBBB BGGG GGGR RRRR > */ > + MESA_FORMAT_B2G3R3_UINT, /* RRRG GGBB > */ > + MESA_FORMAT_R3G3B2_UINT, /* BBGG GRRR > */ > + MESA_FORMAT_A4B4G4R4_UINT, /* RRRR GGGG BBBB AAAA > */ > + MESA_FORMAT_R4G4B4A4_UINT, /* AAAA BBBB GGGG RRRR > */ > + MESA_FORMAT_B4G4R4A4_UINT, /* AAAA RRRR GGGG BBBB > */ > + MESA_FORMAT_A4R4G4B4_UINT, /* BBBB GGGG RRRR AAAA > */ > + MESA_FORMAT_A1B5G5R5_UINT, /* RRRR RGGG GGBB BBBA > */ > + MESA_FORMAT_B5G5R5A1_UINT, /* ARRR RRGG GGGB BBBB > */ > + MESA_FORMAT_A1R5G5B5_UINT, /* BBBB BGGG GGRR RRRA > */ > + MESA_FORMAT_R5G5B5A1_UINT, /* ABBB BBGG GGGR RRRR > */ > > /* Array signed/unsigned non-normalized integer formats */ > MESA_FORMAT_A_UINT8, > diff --git a/src/mesa/main/glformats.c b/src/mesa/main/glformats.c > index c3fd734..d1c7970 100644 > --- a/src/mesa/main/glformats.c > +++ b/src/mesa/main/glformats.c > @@ -2726,12 +2726,16 @@ _mesa_format_from_format_and_type(GLenum format, > GLenum type) > return MESA_FORMAT_B5G6R5_UNORM; > else if (format == GL_BGR) > return MESA_FORMAT_R5G6B5_UNORM; > + else if (format == GL_RGB_INTEGER) > + return MESA_FORMAT_B5G6R5_UINT; > break; > case GL_UNSIGNED_SHORT_5_6_5_REV: > if (format == GL_RGB) > return MESA_FORMAT_R5G6B5_UNORM; > else if (format == GL_BGR) > return MESA_FORMAT_B5G6R5_UNORM; > + else if (format == GL_RGB_INTEGER) > + return MESA_FORMAT_R5G6B5_UINT; > break; > case GL_UNSIGNED_SHORT_4_4_4_4: > if (format == GL_RGBA) > @@ -2740,6 +2744,10 @@ _mesa_format_from_format_and_type(GLenum format, > GLenum type) > return MESA_FORMAT_A4R4G4B4_UNORM; > else if (format == GL_ABGR_EXT) > return MESA_FORMAT_R4G4B4A4_UNORM; > + else if (format == GL_RGBA_INTEGER) > + return MESA_FORMAT_A4B4G4R4_UINT; > + else if (format == GL_BGRA_INTEGER) > + return MESA_FORMAT_A4R4G4B4_UINT; > break; > case GL_UNSIGNED_SHORT_4_4_4_4_REV: > if (format == GL_RGBA) > @@ -2748,26 +2756,42 @@ _mesa_format_from_format_and_type(GLenum format, > GLenum type) > return MESA_FORMAT_B4G4R4A4_UNORM; > else if (format == GL_ABGR_EXT) > return MESA_FORMAT_A4B4G4R4_UNORM; > + else if (format == GL_RGBA_INTEGER) > + return MESA_FORMAT_R4G4B4A4_UINT; > + else if (format == GL_BGRA_INTEGER) > + return MESA_FORMAT_B4G4R4A4_UINT; > break; > case GL_UNSIGNED_SHORT_5_5_5_1: > if (format == GL_RGBA) > return MESA_FORMAT_A1B5G5R5_UNORM; > else if (format == GL_BGRA) > return MESA_FORMAT_A1R5G5B5_UNORM; > + else if (format == GL_RGBA_INTEGER) > + return MESA_FORMAT_A1B5G5R5_UINT; > + else if (format == GL_BGRA_INTEGER) > + return MESA_FORMAT_A1R5G5B5_UINT; > break; > case GL_UNSIGNED_SHORT_1_5_5_5_REV: > if (format == GL_RGBA) > return MESA_FORMAT_R5G5B5A1_UNORM; > else if (format == GL_BGRA) > return MESA_FORMAT_B5G5R5A1_UNORM; > + else if (format == GL_RGBA_INTEGER) > + return MESA_FORMAT_R5G5B5A1_UINT; > + else if (format == GL_BGRA_INTEGER) > + return MESA_FORMAT_B5G5R5A1_UINT; > break; > case GL_UNSIGNED_BYTE_3_3_2: > if (format == GL_RGB) > return MESA_FORMAT_B2G3R3_UNORM; > + else if (format == GL_RGB_INTEGER) > + return MESA_FORMAT_B2G3R3_UINT; > break; > case GL_UNSIGNED_BYTE_2_3_3_REV: > if (format == GL_RGB) > return MESA_FORMAT_R3G3B2_UNORM; > + else if (format == GL_RGB_INTEGER) > + return MESA_FORMAT_R3G3B2_UINT; > break; > case GL_UNSIGNED_INT_5_9_9_9_REV: > if (format == GL_RGB) > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev