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 <imir...@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

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to