[Freedreno] [PATCH] freedreno: always set all border colors

Ilia Mirkin imirkin at alum.mit.edu
Fri Nov 20 14:11:23 PST 2015


Instead of playing the guessing game as to which texture format reads
from which border color encoding type, just write both of them always.

Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
---
 src/gallium/drivers/freedreno/freedreno_texture.c | 38 +++++------------------
 1 file changed, 8 insertions(+), 30 deletions(-)

diff --git a/src/gallium/drivers/freedreno/freedreno_texture.c b/src/gallium/drivers/freedreno/freedreno_texture.c
index f03b65b..f5611ab 100644
--- a/src/gallium/drivers/freedreno/freedreno_texture.c
+++ b/src/gallium/drivers/freedreno/freedreno_texture.c
@@ -197,37 +197,15 @@ fd_setup_border_colors(struct fd_texture_stateobj *tex, void *ptr,
 					continue;
 
 				const struct util_format_channel_description *chan =
-						&desc->channel[desc->swizzle[j]];
-				int size = chan->size;
-
-				/* The Z16 texture format we use seems to look in the
-				 * 32-bit border color slots
-				 */
-				if (desc->colorspace == UTIL_FORMAT_COLORSPACE_ZS)
-					size = 32;
-
-				/* Formats like R11G11B10 or RGB9_E5 don't specify
-				 * per-channel sizes properly.
-				 */
-				if (desc->layout == UTIL_FORMAT_LAYOUT_OTHER)
-					size = 16;
-
-				/* We fake RGTC as if it were RGBA8 */
-				if (desc->layout == UTIL_FORMAT_LAYOUT_RGTC)
-					size = 8;
-
-				if (chan->pure_integer && size > 16)
-					bcolor32[desc->swizzle[j] + 4] =
-							sampler->border_color.i[j];
-				else if (size > 16)
-					bcolor32[desc->swizzle[j]] =
-							fui(sampler->border_color.f[j]);
-				else if (chan->pure_integer)
-					bcolor[desc->swizzle[j] + 8] =
-							sampler->border_color.i[j];
-				else
+					&desc->channel[desc->swizzle[j]];
+				if (chan->pure_integer) {
+					bcolor32[desc->swizzle[j] + 4] = sampler->border_color.i[j];
+					bcolor[desc->swizzle[j] + 8] = sampler->border_color.i[j];
+				} else {
+					bcolor32[desc->swizzle[j]] = fui(sampler->border_color.f[j]);
 					bcolor[desc->swizzle[j]] =
-							util_float_to_half(sampler->border_color.f[j]);
+						util_float_to_half(sampler->border_color.f[j]);
+				}
 			}
 		}
 	}
-- 
2.4.10



More information about the Freedreno mailing list