[Freedreno] [PATCH 7/7] freedreno/a3xx: add missing integer formats and enable rendering

Ilia Mirkin imirkin at alum.mit.edu
Sat Nov 29 19:06:22 PST 2014


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 at alum.mit.edu>
---
 src/gallium/drivers/freedreno/a3xx/fd3_format.c | 33 ++++++++++++++++++++++---
 1 file changed, 30 insertions(+), 3 deletions(-)

diff --git a/src/gallium/drivers/freedreno/a3xx/fd3_format.c b/src/gallium/drivers/freedreno/a3xx/fd3_format.c
index 59f5a44..9235a53 100644
--- a/src/gallium/drivers/freedreno/a3xx/fd3_format.c
+++ b/src/gallium/drivers/freedreno/a3xx/fd3_format.c
@@ -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;
 }
 
-- 
2.0.4



More information about the Freedreno mailing list