summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIlia Mirkin <[email protected]>2014-11-29 02:14:35 -0500
committerIlia Mirkin <[email protected]>2014-11-30 13:04:28 -0500
commit4907c313855affe6680f214e18edd27706dfa378 (patch)
tree9527141bb008c59e2c463f3aa635bd825c5cbe6e
parent82104c19f304a0e953172ad61d149640f0512fa0 (diff)
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 <[email protected]>
-rw-r--r--src/gallium/drivers/freedreno/a3xx/fd3_format.c33
1 files 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 59f5a444979..9235a53bdca 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;
}