diff options
author | Christian Gmeiner <[email protected]> | 2017-06-21 22:36:48 +0200 |
---|---|---|
committer | Christian Gmeiner <[email protected]> | 2017-06-26 19:59:42 +0200 |
commit | d8b2ccdb880f95a15437c384257e6aeea95dba3c (patch) | |
tree | c0f2eff3eab36640ebb6c20409d462af412b42b0 | |
parent | 3bbf8dcfe492560fc03145bc637f424092fd7e03 (diff) |
etnaviv: add support for snorm textures
Based on a patch from Wladimir J. van der Laan and untested due
to lack of hardware. Binary blob emits those formats if GPU supports
HALTI1 (faked with ibvivhook).
Signed-off-by: Christian Gmeiner <[email protected]>
Reviewed-by: Wladimir J. van der Laan <[email protected]>
-rw-r--r-- | src/gallium/drivers/etnaviv/etnaviv_format.c | 7 | ||||
-rw-r--r-- | src/gallium/drivers/etnaviv/etnaviv_screen.c | 3 |
2 files changed, 7 insertions, 3 deletions
diff --git a/src/gallium/drivers/etnaviv/etnaviv_format.c b/src/gallium/drivers/etnaviv/etnaviv_format.c index 354dc2026ca..c7c032a2e39 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_format.c +++ b/src/gallium/drivers/etnaviv/etnaviv_format.c @@ -91,7 +91,7 @@ struct etna_format { static struct etna_format formats[PIPE_FORMAT_COUNT] = { /* 8-bit */ V_(R8_UNORM, UNSIGNED_BYTE, NONE), - V_(R8_SNORM, BYTE, NONE), + VT(R8_SNORM, BYTE, EXT_R8_SNORM | EXT_FORMAT, SWIZ(X, 0, 0, 1), NONE), V_(R8_UINT, UNSIGNED_BYTE, NONE), V_(R8_SINT, BYTE, NONE), V_(R8_USCALED, UNSIGNED_BYTE, NONE), @@ -121,7 +121,7 @@ static struct etna_format formats[PIPE_FORMAT_COUNT] = { _T(B5G5R5X1_UNORM, X1R5G5B5, SWIZ(X, Y, Z, W), X1R5G5B5), VT(R8G8_UNORM, UNSIGNED_BYTE, EXT_G8R8 | EXT_FORMAT, SWIZ(X, Y, 0, 1), NONE), - V_(R8G8_SNORM, BYTE, NONE), + VT(R8G8_SNORM, BYTE, EXT_G8R8_SNORM | EXT_FORMAT, SWIZ(X, Y, 0, 1), NONE), V_(R8G8_UINT, UNSIGNED_BYTE, NONE), V_(R8G8_SINT, BYTE, NONE), V_(R8G8_USCALED, UNSIGNED_BYTE, NONE), @@ -156,8 +156,9 @@ static struct etna_format formats[PIPE_FORMAT_COUNT] = { V_(A8B8G8R8_UNORM, UNSIGNED_BYTE, NONE), V_(R8G8B8A8_UNORM, UNSIGNED_BYTE, A8B8G8R8), - V_(R8G8B8A8_SNORM, BYTE, A8B8G8R8), + VT(R8G8B8A8_SNORM, BYTE, EXT_A8B8G8R8_SNORM | EXT_FORMAT, SWIZ(X, Y, Z, 1), NONE), _T(R8G8B8X8_UNORM, X8B8G8R8, SWIZ(X, Y, Z, W), X8B8G8R8), + _T(R8G8B8X8_SNORM, EXT_X8B8G8R8_SNORM | EXT_FORMAT, SWIZ(X, Y, Z, W), NONE), V_(R8G8B8A8_UINT, UNSIGNED_BYTE, A8B8G8R8), V_(R8G8B8A8_SINT, BYTE, A8B8G8R8), V_(R8G8B8A8_USCALED, UNSIGNED_BYTE, A8B8G8R8), diff --git a/src/gallium/drivers/etnaviv/etnaviv_screen.c b/src/gallium/drivers/etnaviv/etnaviv_screen.c index 19d3d91192b..eefb51c5dad 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_screen.c +++ b/src/gallium/drivers/etnaviv/etnaviv_screen.c @@ -473,6 +473,9 @@ gpu_supports_texure_format(struct etna_screen *screen, uint32_t fmt, if (fmt & EXT_FORMAT) supported = VIV_FEATURE(screen, chipMinorFeatures1, HALTI0); + if (util_format_is_snorm(format)) + supported = VIV_FEATURE(screen, chipMinorFeatures2, HALTI1); + if (!supported) return false; |