X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fmesa%2Fstate_tracker%2Fst_format.c;h=5f9ae91298f52d12c79a43d3545c3854fb20d9c4;hb=02d12719e356ee9e3348db67ae55ae790dad058f;hp=bd4f0860c5270471abcc98fb86bb5b07d87139dc;hpb=636d01bd61cac83e13c3c64874e7e34e828ca93a;p=mesa.git diff --git a/src/mesa/state_tracker/st_format.c b/src/mesa/state_tracker/st_format.c index bd4f0860c52..5f9ae91298f 100644 --- a/src/mesa/state_tracker/st_format.c +++ b/src/mesa/state_tracker/st_format.c @@ -89,13 +89,13 @@ st_format_datatype(enum pipe_format format) format == PIPE_FORMAT_R9G9B9E5_FLOAT) { return GL_FLOAT; } - else if (format == PIPE_FORMAT_Z24_UNORM_S8_USCALED || - format == PIPE_FORMAT_S8_USCALED_Z24_UNORM || + else if (format == PIPE_FORMAT_Z24_UNORM_S8_UINT || + format == PIPE_FORMAT_S8_UINT_Z24_UNORM || format == PIPE_FORMAT_Z24X8_UNORM || format == PIPE_FORMAT_X8Z24_UNORM) { return GL_UNSIGNED_INT_24_8; } - else if (format == PIPE_FORMAT_Z32_FLOAT_S8X24_USCALED) { + else if (format == PIPE_FORMAT_Z32_FLOAT_S8X24_UINT) { return GL_FLOAT_32_UNSIGNED_INT_24_8_REV; } else { @@ -162,6 +162,10 @@ st_mesa_format_to_pipe_format(gl_format mesaFormat) return PIPE_FORMAT_B8G8R8A8_UNORM; case MESA_FORMAT_ARGB8888_REV: return PIPE_FORMAT_A8R8G8B8_UNORM; + case MESA_FORMAT_RGBX8888: + return PIPE_FORMAT_X8B8G8R8_UNORM; + case MESA_FORMAT_RGBX8888_REV: + return PIPE_FORMAT_R8G8B8X8_UNORM; case MESA_FORMAT_XRGB8888: return PIPE_FORMAT_B8G8R8X8_UNORM; case MESA_FORMAT_XRGB8888_REV: @@ -199,19 +203,19 @@ st_mesa_format_to_pipe_format(gl_format mesaFormat) case MESA_FORMAT_Z32: return PIPE_FORMAT_Z32_UNORM; case MESA_FORMAT_Z24_S8: - return PIPE_FORMAT_S8_USCALED_Z24_UNORM; + return PIPE_FORMAT_S8_UINT_Z24_UNORM; case MESA_FORMAT_S8_Z24: - return PIPE_FORMAT_Z24_UNORM_S8_USCALED; + return PIPE_FORMAT_Z24_UNORM_S8_UINT; case MESA_FORMAT_Z24_X8: return PIPE_FORMAT_X8Z24_UNORM; case MESA_FORMAT_X8_Z24: return PIPE_FORMAT_Z24X8_UNORM; case MESA_FORMAT_S8: - return PIPE_FORMAT_S8_USCALED; + return PIPE_FORMAT_S8_UINT; case MESA_FORMAT_Z32_FLOAT: return PIPE_FORMAT_Z32_FLOAT; case MESA_FORMAT_Z32_FLOAT_X24S8: - return PIPE_FORMAT_Z32_FLOAT_S8X24_USCALED; + return PIPE_FORMAT_Z32_FLOAT_S8X24_UINT; case MESA_FORMAT_YCBCR: return PIPE_FORMAT_UYVY; #if FEATURE_texture_s3tc @@ -283,7 +287,7 @@ st_mesa_format_to_pipe_format(gl_format mesaFormat) return PIPE_FORMAT_R8_UNORM; case MESA_FORMAT_R16: return PIPE_FORMAT_R16_UNORM; - case MESA_FORMAT_RG88: + case MESA_FORMAT_GR88: return PIPE_FORMAT_R8G8_UNORM; case MESA_FORMAT_RG1616: return PIPE_FORMAT_R16G16_UNORM; @@ -291,20 +295,112 @@ st_mesa_format_to_pipe_format(gl_format mesaFormat) return PIPE_FORMAT_R16G16B16A16_UNORM; /* signed int formats */ + case MESA_FORMAT_ALPHA_UINT8: + return PIPE_FORMAT_A8_UINT; + case MESA_FORMAT_ALPHA_UINT16: + return PIPE_FORMAT_A16_UINT; + case MESA_FORMAT_ALPHA_UINT32: + return PIPE_FORMAT_A32_UINT; + + case MESA_FORMAT_ALPHA_INT8: + return PIPE_FORMAT_A8_SINT; + case MESA_FORMAT_ALPHA_INT16: + return PIPE_FORMAT_A16_SINT; + case MESA_FORMAT_ALPHA_INT32: + return PIPE_FORMAT_A32_SINT; + + case MESA_FORMAT_INTENSITY_UINT8: + return PIPE_FORMAT_I8_UINT; + case MESA_FORMAT_INTENSITY_UINT16: + return PIPE_FORMAT_I16_UINT; + case MESA_FORMAT_INTENSITY_UINT32: + return PIPE_FORMAT_I32_UINT; + + case MESA_FORMAT_INTENSITY_INT8: + return PIPE_FORMAT_I8_SINT; + case MESA_FORMAT_INTENSITY_INT16: + return PIPE_FORMAT_I16_SINT; + case MESA_FORMAT_INTENSITY_INT32: + return PIPE_FORMAT_I32_SINT; + + case MESA_FORMAT_LUMINANCE_UINT8: + return PIPE_FORMAT_L8_UINT; + case MESA_FORMAT_LUMINANCE_UINT16: + return PIPE_FORMAT_L16_UINT; + case MESA_FORMAT_LUMINANCE_UINT32: + return PIPE_FORMAT_L32_UINT; + + case MESA_FORMAT_LUMINANCE_INT8: + return PIPE_FORMAT_L8_SINT; + case MESA_FORMAT_LUMINANCE_INT16: + return PIPE_FORMAT_L16_SINT; + case MESA_FORMAT_LUMINANCE_INT32: + return PIPE_FORMAT_L32_SINT; + + case MESA_FORMAT_LUMINANCE_ALPHA_UINT8: + return PIPE_FORMAT_L8A8_UINT; + case MESA_FORMAT_LUMINANCE_ALPHA_UINT16: + return PIPE_FORMAT_L16A16_UINT; + case MESA_FORMAT_LUMINANCE_ALPHA_UINT32: + return PIPE_FORMAT_L32A32_UINT; + + case MESA_FORMAT_LUMINANCE_ALPHA_INT8: + return PIPE_FORMAT_L8A8_SINT; + case MESA_FORMAT_LUMINANCE_ALPHA_INT16: + return PIPE_FORMAT_L16A16_SINT; + case MESA_FORMAT_LUMINANCE_ALPHA_INT32: + return PIPE_FORMAT_L32A32_SINT; + + case MESA_FORMAT_R_INT8: + return PIPE_FORMAT_R8_SINT; + case MESA_FORMAT_RG_INT8: + return PIPE_FORMAT_R8G8_SINT; + case MESA_FORMAT_RGB_INT8: + return PIPE_FORMAT_R8G8B8_SINT; case MESA_FORMAT_RGBA_INT8: - return PIPE_FORMAT_R8G8B8A8_SSCALED; + return PIPE_FORMAT_R8G8B8A8_SINT; + case MESA_FORMAT_R_INT16: + return PIPE_FORMAT_R16_SINT; + case MESA_FORMAT_RG_INT16: + return PIPE_FORMAT_R16G16_SINT; + case MESA_FORMAT_RGB_INT16: + return PIPE_FORMAT_R16G16B16_SINT; case MESA_FORMAT_RGBA_INT16: - return PIPE_FORMAT_R16G16B16A16_SSCALED; + return PIPE_FORMAT_R16G16B16A16_SINT; + case MESA_FORMAT_R_INT32: + return PIPE_FORMAT_R32_SINT; + case MESA_FORMAT_RG_INT32: + return PIPE_FORMAT_R32G32_SINT; + case MESA_FORMAT_RGB_INT32: + return PIPE_FORMAT_R32G32B32_SINT; case MESA_FORMAT_RGBA_INT32: - return PIPE_FORMAT_R32G32B32A32_SSCALED; + return PIPE_FORMAT_R32G32B32A32_SINT; /* unsigned int formats */ + case MESA_FORMAT_R_UINT8: + return PIPE_FORMAT_R8_UINT; + case MESA_FORMAT_RG_UINT8: + return PIPE_FORMAT_R8G8_UINT; + case MESA_FORMAT_RGB_UINT8: + return PIPE_FORMAT_R8G8B8_UINT; case MESA_FORMAT_RGBA_UINT8: - return PIPE_FORMAT_R8G8B8A8_USCALED; + return PIPE_FORMAT_R8G8B8A8_UINT; + case MESA_FORMAT_R_UINT16: + return PIPE_FORMAT_R16_UINT; + case MESA_FORMAT_RG_UINT16: + return PIPE_FORMAT_R16G16_UINT; + case MESA_FORMAT_RGB_UINT16: + return PIPE_FORMAT_R16G16B16_UINT; case MESA_FORMAT_RGBA_UINT16: - return PIPE_FORMAT_R16G16B16A16_USCALED; + return PIPE_FORMAT_R16G16B16A16_UINT; + case MESA_FORMAT_R_UINT32: + return PIPE_FORMAT_R32_UINT; + case MESA_FORMAT_RG_UINT32: + return PIPE_FORMAT_R32G32_UINT; + case MESA_FORMAT_RGB_UINT32: + return PIPE_FORMAT_R32G32B32_UINT; case MESA_FORMAT_RGBA_UINT32: - return PIPE_FORMAT_R32G32B32A32_USCALED; + return PIPE_FORMAT_R32G32B32A32_UINT; case MESA_FORMAT_RED_RGTC1: return PIPE_FORMAT_RGTC1_UNORM; @@ -324,6 +420,9 @@ st_mesa_format_to_pipe_format(gl_format mesaFormat) case MESA_FORMAT_SIGNED_LA_LATC2: return PIPE_FORMAT_LATC2_SNORM; + case MESA_FORMAT_ETC1_RGB8: + return PIPE_FORMAT_ETC1_RGB8; + /* signed normalized formats */ case MESA_FORMAT_SIGNED_R8: return PIPE_FORMAT_R8_SNORM; @@ -361,7 +460,8 @@ st_mesa_format_to_pipe_format(gl_format mesaFormat) return PIPE_FORMAT_R9G9B9E5_FLOAT; case MESA_FORMAT_R11_G11_B10_FLOAT: return PIPE_FORMAT_R11G11B10_FLOAT; - + case MESA_FORMAT_ARGB2101010_UINT: + return PIPE_FORMAT_B10G10R10A2_UINT; default: assert(0); return PIPE_FORMAT_NONE; @@ -384,6 +484,10 @@ st_pipe_format_to_mesa_format(enum pipe_format format) return MESA_FORMAT_ARGB8888; case PIPE_FORMAT_A8R8G8B8_UNORM: return MESA_FORMAT_ARGB8888_REV; + case PIPE_FORMAT_X8B8G8R8_UNORM: + return MESA_FORMAT_RGBX8888; + case PIPE_FORMAT_R8G8B8X8_UNORM: + return MESA_FORMAT_RGBX8888_REV; case PIPE_FORMAT_B8G8R8X8_UNORM: return MESA_FORMAT_XRGB8888; case PIPE_FORMAT_X8R8G8B8_UNORM: @@ -416,7 +520,7 @@ st_pipe_format_to_mesa_format(enum pipe_format format) return MESA_FORMAT_I8; case PIPE_FORMAT_I16_UNORM: return MESA_FORMAT_I16; - case PIPE_FORMAT_S8_USCALED: + case PIPE_FORMAT_S8_UINT: return MESA_FORMAT_S8; case PIPE_FORMAT_R16G16B16A16_UNORM: @@ -426,17 +530,17 @@ st_pipe_format_to_mesa_format(enum pipe_format format) return MESA_FORMAT_Z16; case PIPE_FORMAT_Z32_UNORM: return MESA_FORMAT_Z32; - case PIPE_FORMAT_S8_USCALED_Z24_UNORM: + case PIPE_FORMAT_S8_UINT_Z24_UNORM: return MESA_FORMAT_Z24_S8; case PIPE_FORMAT_X8Z24_UNORM: return MESA_FORMAT_Z24_X8; case PIPE_FORMAT_Z24X8_UNORM: return MESA_FORMAT_X8_Z24; - case PIPE_FORMAT_Z24_UNORM_S8_USCALED: + case PIPE_FORMAT_Z24_UNORM_S8_UINT: return MESA_FORMAT_S8_Z24; case PIPE_FORMAT_Z32_FLOAT: return MESA_FORMAT_Z32_FLOAT; - case PIPE_FORMAT_Z32_FLOAT_S8X24_USCALED: + case PIPE_FORMAT_Z32_FLOAT_S8X24_UINT: return MESA_FORMAT_Z32_FLOAT_X24S8; case PIPE_FORMAT_UYVY: @@ -515,24 +619,115 @@ st_pipe_format_to_mesa_format(enum pipe_format format) case PIPE_FORMAT_R16_UNORM: return MESA_FORMAT_R16; case PIPE_FORMAT_R8G8_UNORM: - return MESA_FORMAT_RG88; + return MESA_FORMAT_GR88; case PIPE_FORMAT_R16G16_UNORM: return MESA_FORMAT_RG1616; - /* signed int formats */ - case PIPE_FORMAT_R8G8B8A8_SSCALED: + case PIPE_FORMAT_A8_UINT: + return MESA_FORMAT_ALPHA_UINT8; + case PIPE_FORMAT_A16_UINT: + return MESA_FORMAT_ALPHA_UINT16; + case PIPE_FORMAT_A32_UINT: + return MESA_FORMAT_ALPHA_UINT32; + case PIPE_FORMAT_A8_SINT: + return MESA_FORMAT_ALPHA_INT8; + case PIPE_FORMAT_A16_SINT: + return MESA_FORMAT_ALPHA_INT16; + case PIPE_FORMAT_A32_SINT: + return MESA_FORMAT_ALPHA_INT32; + + case PIPE_FORMAT_I8_UINT: + return MESA_FORMAT_INTENSITY_UINT8; + case PIPE_FORMAT_I16_UINT: + return MESA_FORMAT_INTENSITY_UINT16; + case PIPE_FORMAT_I32_UINT: + return MESA_FORMAT_INTENSITY_UINT32; + case PIPE_FORMAT_I8_SINT: + return MESA_FORMAT_INTENSITY_INT8; + case PIPE_FORMAT_I16_SINT: + return MESA_FORMAT_INTENSITY_INT16; + case PIPE_FORMAT_I32_SINT: + return MESA_FORMAT_INTENSITY_INT32; + + case PIPE_FORMAT_L8_UINT: + return MESA_FORMAT_LUMINANCE_UINT8; + case PIPE_FORMAT_L16_UINT: + return MESA_FORMAT_LUMINANCE_UINT16; + case PIPE_FORMAT_L32_UINT: + return MESA_FORMAT_LUMINANCE_UINT32; + case PIPE_FORMAT_L8_SINT: + return MESA_FORMAT_LUMINANCE_INT8; + case PIPE_FORMAT_L16_SINT: + return MESA_FORMAT_LUMINANCE_INT16; + case PIPE_FORMAT_L32_SINT: + return MESA_FORMAT_LUMINANCE_INT32; + + case PIPE_FORMAT_L8A8_UINT: + return MESA_FORMAT_LUMINANCE_ALPHA_UINT8; + case PIPE_FORMAT_L16A16_UINT: + return MESA_FORMAT_LUMINANCE_ALPHA_UINT16; + case PIPE_FORMAT_L32A32_UINT: + return MESA_FORMAT_LUMINANCE_ALPHA_UINT32; + case PIPE_FORMAT_L8A8_SINT: + return MESA_FORMAT_LUMINANCE_ALPHA_INT8; + case PIPE_FORMAT_L16A16_SINT: + return MESA_FORMAT_LUMINANCE_ALPHA_INT16; + case PIPE_FORMAT_L32A32_SINT: + return MESA_FORMAT_LUMINANCE_ALPHA_INT32; + + case PIPE_FORMAT_R8_SINT: + return MESA_FORMAT_R_INT8; + case PIPE_FORMAT_R8G8_SINT: + return MESA_FORMAT_RG_INT8; + case PIPE_FORMAT_R8G8B8_SINT: + return MESA_FORMAT_RGB_INT8; + case PIPE_FORMAT_R8G8B8A8_SINT: return MESA_FORMAT_RGBA_INT8; - case PIPE_FORMAT_R16G16B16A16_SSCALED: + + case PIPE_FORMAT_R16_SINT: + return MESA_FORMAT_R_INT16; + case PIPE_FORMAT_R16G16_SINT: + return MESA_FORMAT_RG_INT16; + case PIPE_FORMAT_R16G16B16_SINT: + return MESA_FORMAT_RGB_INT16; + case PIPE_FORMAT_R16G16B16A16_SINT: return MESA_FORMAT_RGBA_INT16; - case PIPE_FORMAT_R32G32B32A32_SSCALED: + + case PIPE_FORMAT_R32_SINT: + return MESA_FORMAT_R_INT32; + case PIPE_FORMAT_R32G32_SINT: + return MESA_FORMAT_RG_INT32; + case PIPE_FORMAT_R32G32B32_SINT: + return MESA_FORMAT_RGB_INT32; + case PIPE_FORMAT_R32G32B32A32_SINT: return MESA_FORMAT_RGBA_INT32; /* unsigned int formats */ - case PIPE_FORMAT_R8G8B8A8_USCALED: + case PIPE_FORMAT_R8_UINT: + return MESA_FORMAT_R_UINT8; + case PIPE_FORMAT_R8G8_UINT: + return MESA_FORMAT_RG_UINT8; + case PIPE_FORMAT_R8G8B8_UINT: + return MESA_FORMAT_RGB_UINT8; + case PIPE_FORMAT_R8G8B8A8_UINT: return MESA_FORMAT_RGBA_UINT8; - case PIPE_FORMAT_R16G16B16A16_USCALED: + + case PIPE_FORMAT_R16_UINT: + return MESA_FORMAT_R_UINT16; + case PIPE_FORMAT_R16G16_UINT: + return MESA_FORMAT_RG_UINT16; + case PIPE_FORMAT_R16G16B16_UINT: + return MESA_FORMAT_RGB_UINT16; + case PIPE_FORMAT_R16G16B16A16_UINT: return MESA_FORMAT_RGBA_UINT16; - case PIPE_FORMAT_R32G32B32A32_USCALED: + + case PIPE_FORMAT_R32_UINT: + return MESA_FORMAT_R_UINT32; + case PIPE_FORMAT_R32G32_UINT: + return MESA_FORMAT_RG_UINT32; + case PIPE_FORMAT_R32G32B32_UINT: + return MESA_FORMAT_RGB_UINT32; + case PIPE_FORMAT_R32G32B32A32_UINT: return MESA_FORMAT_RGBA_UINT32; case PIPE_FORMAT_RGTC1_UNORM: @@ -553,6 +748,9 @@ st_pipe_format_to_mesa_format(enum pipe_format format) case PIPE_FORMAT_LATC2_SNORM: return MESA_FORMAT_SIGNED_LA_LATC2; + case PIPE_FORMAT_ETC1_RGB8: + return MESA_FORMAT_ETC1_RGB8; + /* signed normalized formats */ case PIPE_FORMAT_R8_SNORM: return MESA_FORMAT_SIGNED_R8; @@ -591,6 +789,8 @@ st_pipe_format_to_mesa_format(enum pipe_format format) case PIPE_FORMAT_R11G11B10_FLOAT: return MESA_FORMAT_R11_G11_B10_FLOAT; + case PIPE_FORMAT_B10G10R10A2_UINT: + return MESA_FORMAT_ARGB2101010_UINT; default: assert(0); return MESA_FORMAT_NONE; @@ -635,8 +835,8 @@ struct format_mapping PIPE_FORMAT_Z24X8_UNORM, \ PIPE_FORMAT_X8Z24_UNORM, \ PIPE_FORMAT_Z16_UNORM, \ - PIPE_FORMAT_Z24_UNORM_S8_USCALED, \ - PIPE_FORMAT_S8_USCALED_Z24_UNORM, \ + PIPE_FORMAT_Z24_UNORM_S8_UINT, \ + PIPE_FORMAT_S8_UINT_Z24_UNORM, \ 0 /** @@ -805,19 +1005,19 @@ static const struct format_mapping format_map[] = { { GL_STENCIL_INDEX, GL_STENCIL_INDEX1_EXT, GL_STENCIL_INDEX4_EXT, GL_STENCIL_INDEX8_EXT, GL_STENCIL_INDEX16_EXT, 0 }, { - PIPE_FORMAT_S8_USCALED, PIPE_FORMAT_Z24_UNORM_S8_USCALED, - PIPE_FORMAT_S8_USCALED_Z24_UNORM, 0 + PIPE_FORMAT_S8_UINT, PIPE_FORMAT_Z24_UNORM_S8_UINT, + PIPE_FORMAT_S8_UINT_Z24_UNORM, 0 } }, /* Depth / Stencil formats */ { { GL_DEPTH_STENCIL_EXT, GL_DEPTH24_STENCIL8_EXT, 0 }, - { PIPE_FORMAT_Z24_UNORM_S8_USCALED, PIPE_FORMAT_S8_USCALED_Z24_UNORM, 0 } + { PIPE_FORMAT_Z24_UNORM_S8_UINT, PIPE_FORMAT_S8_UINT_Z24_UNORM, 0 } }, { { GL_DEPTH32F_STENCIL8, 0 }, - { PIPE_FORMAT_Z32_FLOAT_S8X24_USCALED, 0 } + { PIPE_FORMAT_Z32_FLOAT_S8X24_UINT, 0 } }, /* sRGB formats */ @@ -995,80 +1195,222 @@ static const struct format_mapping format_map[] = { { PIPE_FORMAT_LATC2_SNORM, 0 } }, + /* ETC1 */ + { + { GL_ETC1_RGB8_OES, 0 }, + { PIPE_FORMAT_ETC1_RGB8, 0 } + }, + /* signed/unsigned integer formats. - * XXX Mesa only has formats for RGBA signed/unsigned integer formats. - * If/when new formats are added this code should be updated. */ { { GL_RED_INTEGER_EXT, GL_GREEN_INTEGER_EXT, GL_BLUE_INTEGER_EXT, - GL_ALPHA_INTEGER_EXT, - GL_RGB_INTEGER_EXT, GL_RGBA_INTEGER_EXT, - GL_BGR_INTEGER_EXT, GL_BGRA_INTEGER_EXT, - GL_LUMINANCE_INTEGER_EXT, - GL_LUMINANCE_ALPHA_INTEGER_EXT, - GL_RGBA8I_EXT, - GL_RGB8I_EXT, - GL_ALPHA8I_EXT, - GL_INTENSITY8I_EXT, - GL_LUMINANCE8I_EXT, + GL_RGBA8I_EXT, 0 }, + { PIPE_FORMAT_R8G8B8A8_SINT, 0 } + }, + { + { GL_RGB_INTEGER_EXT, + GL_BGR_INTEGER_EXT, + GL_RGB8I_EXT, 0 }, + { PIPE_FORMAT_R8G8B8_SINT, + PIPE_FORMAT_R8G8B8A8_SINT, 0 } + }, + { + { GL_ALPHA_INTEGER_EXT, + GL_ALPHA8I_EXT, 0 }, + { PIPE_FORMAT_A8_SINT, 0 } + }, + { + { GL_ALPHA16I_EXT, 0 }, + { PIPE_FORMAT_A16_SINT, 0 } + }, + { + { GL_ALPHA32I_EXT, 0 }, + { PIPE_FORMAT_A32_SINT, 0 } + }, + { + { GL_ALPHA8UI_EXT, 0 }, + { PIPE_FORMAT_A8_UINT, 0 } + }, + { + { GL_ALPHA16UI_EXT, 0 }, + { PIPE_FORMAT_A16_UINT, 0 } + }, + { + { GL_ALPHA32UI_EXT, 0 }, + { PIPE_FORMAT_A32_UINT, 0 } + }, + { + { GL_INTENSITY8I_EXT, 0 }, + { PIPE_FORMAT_I8_SINT, 0 } + }, + { + { GL_INTENSITY16I_EXT, 0 }, + { PIPE_FORMAT_I16_SINT, 0 } + }, + { + { GL_INTENSITY32I_EXT, 0 }, + { PIPE_FORMAT_I32_SINT, 0 } + }, + { + { GL_INTENSITY8UI_EXT, 0 }, + { PIPE_FORMAT_I8_UINT, 0 } + }, + { + { GL_INTENSITY16UI_EXT, 0 }, + { PIPE_FORMAT_I16_UINT, 0 } + }, + { + { GL_INTENSITY32UI_EXT, 0 }, + { PIPE_FORMAT_I32_UINT, 0 } + }, + { + { GL_LUMINANCE8I_EXT, 0 }, + { PIPE_FORMAT_L8_SINT, 0 } + }, + { + { GL_LUMINANCE16I_EXT, 0 }, + { PIPE_FORMAT_L16_SINT, 0 } + }, + { + { GL_LUMINANCE32I_EXT, 0 }, + { PIPE_FORMAT_L32_SINT, 0 } + }, + { + { GL_LUMINANCE_INTEGER_EXT, + GL_LUMINANCE8UI_EXT, 0 }, + { PIPE_FORMAT_L8_UINT, 0 } + }, + { + { GL_LUMINANCE16UI_EXT, 0 }, + { PIPE_FORMAT_L16_UINT, 0 } + }, + { + { GL_LUMINANCE32UI_EXT, 0 }, + { PIPE_FORMAT_L32_UINT, 0 } + }, + { + { GL_LUMINANCE_ALPHA_INTEGER_EXT, GL_LUMINANCE_ALPHA8I_EXT, 0 }, - { PIPE_FORMAT_R8G8B8A8_SSCALED, 0 } + { PIPE_FORMAT_L8A8_SINT, 0 } }, { - { - GL_RGBA16I_EXT, - GL_RGB16I_EXT, - GL_ALPHA16I_EXT, - GL_INTENSITY16I_EXT, - GL_LUMINANCE16I_EXT, - GL_LUMINANCE_ALPHA16I_EXT, 0 }, - { PIPE_FORMAT_R16G16B16A16_SSCALED, 0 }, + { GL_LUMINANCE_ALPHA16I_EXT, 0 }, + { PIPE_FORMAT_L16A16_SINT, 0 } }, { - { - GL_RGBA32I_EXT, - GL_RGB32I_EXT, - GL_ALPHA32I_EXT, - GL_INTENSITY32I_EXT, - GL_LUMINANCE32I_EXT, - GL_LUMINANCE_ALPHA32I_EXT, 0 }, - { PIPE_FORMAT_R32G32B32A32_SSCALED, 0 } + { GL_LUMINANCE_ALPHA32I_EXT, 0 }, + { PIPE_FORMAT_L32A32_SINT, 0 } }, { - { - GL_RGBA8UI_EXT, - GL_RGB8UI_EXT, - GL_ALPHA8UI_EXT, - GL_INTENSITY8UI_EXT, - GL_LUMINANCE8UI_EXT, - GL_LUMINANCE_ALPHA8UI_EXT, 0 }, - { PIPE_FORMAT_R8G8B8A8_USCALED, 0 } + { GL_LUMINANCE_ALPHA8UI_EXT, 0 }, + { PIPE_FORMAT_L8A8_UINT, 0 } }, { - { - GL_RGBA16UI_EXT, - GL_RGB16UI_EXT, - GL_ALPHA16UI_EXT, - GL_INTENSITY16UI_EXT, - GL_LUMINANCE16UI_EXT, - GL_LUMINANCE_ALPHA16UI_EXT, 0 }, - { PIPE_FORMAT_R16G16B16A16_USCALED, 0 } + { GL_LUMINANCE_ALPHA16UI_EXT, 0 }, + { PIPE_FORMAT_L16A16_UINT, 0 } }, { - { - GL_RGBA32UI_EXT, - GL_RGB32UI_EXT, - GL_ALPHA32UI_EXT, - GL_INTENSITY32UI_EXT, - GL_LUMINANCE32UI_EXT, - GL_LUMINANCE_ALPHA32UI_EXT, 0 }, - { PIPE_FORMAT_R32G32B32A32_USCALED, 0 } + { GL_LUMINANCE_ALPHA32UI_EXT, 0 }, + { PIPE_FORMAT_L32A32_UINT, 0 } + }, + { + { GL_RGB16I_EXT, 0 }, + { PIPE_FORMAT_R16G16B16_SINT, + PIPE_FORMAT_R16G16B16A16_SINT, 0 }, + }, + { + { GL_RGBA16I_EXT, 0 }, + { PIPE_FORMAT_R16G16B16A16_SINT, 0 }, + }, + { + { GL_RGB32I_EXT, 0 }, + { PIPE_FORMAT_R32G32B32_SINT, + PIPE_FORMAT_R32G32B32A32_SINT, 0 }, + }, + { + { GL_RGBA32I_EXT, 0 }, + { PIPE_FORMAT_R32G32B32A32_SINT, 0 } + }, + { + { GL_RGBA8UI_EXT, 0 }, + { PIPE_FORMAT_R8G8B8A8_UINT, 0 } + }, + { + { GL_RGB8UI_EXT, 0 }, + { PIPE_FORMAT_R8G8B8_UINT, + PIPE_FORMAT_R8G8B8A8_UINT, 0 } + }, + { + { GL_RGB16UI_EXT, 0 }, + { PIPE_FORMAT_R16G16B16_UINT, + PIPE_FORMAT_R16G16B16A16_UINT, 0 } + }, + { + { GL_RGBA16UI_EXT, 0 }, + { PIPE_FORMAT_R16G16B16A16_UINT, 0 } + }, + { + { GL_RGB32UI_EXT, 0}, + { PIPE_FORMAT_R32G32B32_UINT, + PIPE_FORMAT_R32G32B32A32_UINT, 0 } + }, + { + { GL_RGBA32UI_EXT, 0}, + { PIPE_FORMAT_R32G32B32A32_UINT, 0 } + }, + { + { GL_R8I, 0}, + { PIPE_FORMAT_R8_SINT, 0}, + }, + { + { GL_R16I, 0}, + { PIPE_FORMAT_R16_SINT, 0}, + }, + { + { GL_R32I, 0}, + { PIPE_FORMAT_R32_SINT, 0}, + }, + { + { GL_R8UI, 0}, + { PIPE_FORMAT_R8_UINT, 0}, + }, + { + { GL_R16UI, 0}, + { PIPE_FORMAT_R16_UINT, 0}, + }, + { + { GL_R32UI, 0}, + { PIPE_FORMAT_R32_UINT, 0}, + }, + { + { GL_RG8I, 0}, + { PIPE_FORMAT_R8G8_SINT, 0}, + }, + { + { GL_RG16I, 0}, + { PIPE_FORMAT_R16G16_SINT, 0}, + }, + { + { GL_RG32I, 0}, + { PIPE_FORMAT_R32G32_SINT, 0}, + }, + { + { GL_RG8UI, 0}, + { PIPE_FORMAT_R8G8_UINT, 0}, + }, + { + { GL_RG16UI, 0}, + { PIPE_FORMAT_R16G16_UINT, 0}, + }, + { + { GL_RG32UI, 0}, + { PIPE_FORMAT_R32G32_UINT, 0}, }, - /* signed normalized formats */ { { GL_RED_SNORM, GL_R8_SNORM, 0 }, @@ -1144,7 +1486,11 @@ static const struct format_mapping format_map[] = { { { GL_R11F_G11F_B10F, 0 }, { PIPE_FORMAT_R11G11B10_FLOAT, 0 } - } + }, + { + { GL_RGB10_A2UI, 0 }, + { PIPE_FORMAT_B10G10R10A2_UINT, 0 } + }, }; @@ -1441,8 +1787,9 @@ st_sampler_compat_formats(enum pipe_format format1, enum pipe_format format2) * This is used for translating texture border color and the clear * color. For example, the clear color is interpreted according to * the renderbuffer's base format. For example, if clearing a - * GL_LUMINANCE buffer, ClearColor[0] = luminance and ClearColor[1] = - * alpha. Similarly for texture border colors. + * GL_LUMINANCE buffer, we'll return colorOut[0] = colorOut[1] = + * colorOut[2] = colorIn[0]. + * Similarly for texture border colors. */ void st_translate_color(const GLfloat colorIn[4], GLenum baseFormat,