freedreno/a3xx: add missing integer formats and enable rendering

The mesa state tracker doesn't fall back on similar integer formats, so
they must all be provided. Remove the restriction against integer color
rendering.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
This commit is contained in:
Ilia Mirkin 2014-11-29 02:14:35 -05:00
parent 82104c19f3
commit 4907c31385

View file

@ -84,6 +84,13 @@ static struct fd3_format formats[PIPE_FORMAT_COUNT] = {
_T(L8_UNORM, 8_UNORM, R8_UNORM, WZYX),
_T(I8_UNORM, 8_UNORM, NONE, WZYX),
_T(A8_UINT, 8_UINT, NONE, WZYX),
_T(A8_SINT, 8_SINT, NONE, WZYX),
_T(L8_UINT, 8_UINT, NONE, WZYX),
_T(L8_SINT, 8_SINT, NONE, WZYX),
_T(I8_UINT, 8_UINT, NONE, WZYX),
_T(I8_SINT, 8_SINT, NONE, WZYX),
/* 16-bit */
VT(R16_UNORM, 16_UNORM, NONE, WZYX),
VT(R16_SNORM, 16_SNORM, NONE, WZYX),
@ -93,6 +100,13 @@ static struct fd3_format formats[PIPE_FORMAT_COUNT] = {
V_(R16_SSCALED, 16_UINT, NONE, WZYX),
VT(R16_FLOAT, 16_FLOAT, NONE, WZYX),
_T(A16_UINT, 16_UINT, NONE, WZYX),
_T(A16_SINT, 16_SINT, NONE, WZYX),
_T(L16_UINT, 16_UINT, NONE, WZYX),
_T(L16_SINT, 16_SINT, NONE, WZYX),
_T(I16_UINT, 16_UINT, NONE, WZYX),
_T(I16_SINT, 16_SINT, NONE, WZYX),
VT(R8G8_UNORM, 8_8_UNORM, R8G8_UNORM, WZYX),
VT(R8G8_SNORM, 8_8_SNORM, R8G8_SNORM, WZYX),
VT(R8G8_UINT, 8_8_UINT, NONE, WZYX),
@ -100,6 +114,9 @@ static struct fd3_format formats[PIPE_FORMAT_COUNT] = {
V_(R8G8_USCALED, 8_8_UINT, NONE, WZYX),
V_(R8G8_SSCALED, 8_8_SINT, NONE, WZYX),
_T(L8A8_UINT, 8_8_UINT, NONE, WZYX),
_T(L8A8_SINT, 8_8_SINT, NONE, WZYX),
_T(Z16_UNORM, Z16_UNORM, R8G8_UNORM, WZYX),
/*_T(B5G6R5_UNORM, 5_6_5_UNORM, R5G6B5_UNORM, WXYZ),*/
_T(B5G5R5A1_UNORM, 5_5_5_1_UNORM, R5G5B5A1_UNORM, WXYZ),
@ -122,6 +139,13 @@ static struct fd3_format formats[PIPE_FORMAT_COUNT] = {
VT(R32_FLOAT, 32_FLOAT, NONE, WZYX),
V_(R32_FIXED, 32_FIXED, NONE, WZYX),
_T(A32_UINT, 32_UINT, NONE, WZYX),
_T(A32_SINT, 32_SINT, NONE, WZYX),
_T(L32_UINT, 32_UINT, NONE, WZYX),
_T(L32_SINT, 32_SINT, NONE, WZYX),
_T(I32_UINT, 32_UINT, NONE, WZYX),
_T(I32_SINT, 32_SINT, NONE, WZYX),
VT(R16G16_UNORM, 16_16_UNORM, NONE, WZYX),
VT(R16G16_SNORM, 16_16_SNORM, NONE, WZYX),
VT(R16G16_UINT, 16_16_UINT, R16G16_UINT, WZYX),
@ -130,6 +154,9 @@ static struct fd3_format formats[PIPE_FORMAT_COUNT] = {
V_(R16G16_SSCALED, 16_16_SINT, NONE, WZYX),
VT(R16G16_FLOAT, 16_16_FLOAT, NONE, WZYX),
_T(L16A16_UINT, 16_16_UINT, NONE, WZYX),
_T(L16A16_SINT, 16_16_SINT, NONE, WZYX),
VT(R8G8B8A8_UNORM, 8_8_8_8_UNORM, R8G8B8A8_UNORM, WZYX),
_T(R8G8B8X8_UNORM, 8_8_8_8_UNORM, R8G8B8A8_UNORM, WZYX),
_T(R8G8B8A8_SRGB, 8_8_8_8_UNORM, NONE, WZYX),
@ -196,6 +223,9 @@ static struct fd3_format formats[PIPE_FORMAT_COUNT] = {
VT(R32G32_FLOAT, 32_32_FLOAT, NONE, WZYX),
V_(R32G32_FIXED, 32_32_FIXED, NONE, WZYX),
_T(L32A32_UINT, 32_32_UINT, NONE, WZYX),
_T(L32A32_SINT, 32_32_SINT, NONE, WZYX),
/* 96-bit */
V_(R32G32B32_UINT, 32_32_32_UINT, NONE, WZYX),
V_(R32G32B32_SINT, 32_32_32_SINT, NONE, WZYX),
@ -237,9 +267,6 @@ fd3_pipe2color(enum pipe_format format)
{
if (!formats[format].present)
return ~0;
/* Integer formats don't render properly yet */
if (util_format_is_pure_integer(format))
return ~0;
return formats[format].rb;
}