On 13/06/17 04:18, Marek Olšák wrote:
From: Marek Olšák <marek.ol...@amd.com>

AMD SI-VI use this. GFX9 doesn't. We can stop doing this for SI-VI since
border color swizzling is broken there anyway. The only other user of this
code is nouveau.

Maybe move this comment into the code as a TODO? I was a little confused at first as I thought this commit was meant to make the change. With that:

Reviewed-by: Timothy Arceri <tarc...@itsqueeze.com>

---
  src/mesa/state_tracker/st_atom_sampler.c | 61 +++++++++++++++++---------------
  1 file changed, 33 insertions(+), 28 deletions(-)

diff --git a/src/mesa/state_tracker/st_atom_sampler.c 
b/src/mesa/state_tracker/st_atom_sampler.c
index 9e5d940..9695069 100644
--- a/src/mesa/state_tracker/st_atom_sampler.c
+++ b/src/mesa/state_tracker/st_atom_sampler.c
@@ -170,51 +170,56 @@ st_convert_sampler(const struct st_context *st,
        sampler->max_lod = sampler->min_lod;
        sampler->min_lod = tmp;
        assert(sampler->min_lod <= sampler->max_lod);
     }
/* For non-black borders... */
     if (msamp->BorderColor.ui[0] ||
         msamp->BorderColor.ui[1] ||
         msamp->BorderColor.ui[2] ||
         msamp->BorderColor.ui[3]) {
-      const struct st_texture_object *stobj = st_texture_object_const(texobj);
        const GLboolean is_integer = texobj->_IsIntegerFormat;
-      const struct pipe_sampler_view *sv = NULL;
-      union pipe_color_union border_color;
-      GLuint i;
-
-      /* Just search for the first used view. We can do this because the
-         swizzle is per-texture, not per context. */
-      /* XXX: clean that up to not use the sampler view at all */
-      for (i = 0; i < stobj->num_sampler_views; ++i) {
-         if (stobj->sampler_views[i]) {
-            sv = stobj->sampler_views[i];
-            break;
-         }
-      }
- if (st->apply_texture_swizzle_to_border_color && sv) {
-         const unsigned char swz[4] =
-         {
-            sv->swizzle_r,
-            sv->swizzle_g,
-            sv->swizzle_b,
-            sv->swizzle_a,
-         };
-
-         st_translate_color(&msamp->BorderColor,
-                            &border_color,
-                            texBaseFormat, is_integer);
+      if (st->apply_texture_swizzle_to_border_color) {
+         const struct st_texture_object *stobj = 
st_texture_object_const(texobj);
+         const struct pipe_sampler_view *sv = NULL;
+
+         /* Just search for the first used view. We can do this because the
+            swizzle is per-texture, not per context. */
+         /* XXX: clean that up to not use the sampler view at all */
+         for (unsigned i = 0; i < stobj->num_sampler_views; ++i) {
+            if (stobj->sampler_views[i]) {
+               sv = stobj->sampler_views[i];
+               break;
+            }
+         }
- util_format_apply_color_swizzle(&sampler->border_color,
-                                         &border_color, swz, is_integer);
+         if (sv) {
+            union pipe_color_union tmp;
+            const unsigned char swz[4] =
+            {
+               sv->swizzle_r,
+               sv->swizzle_g,
+               sv->swizzle_b,
+               sv->swizzle_a,
+            };
+
+            st_translate_color(&msamp->BorderColor, &tmp,
+                               texBaseFormat, is_integer);
+
+            util_format_apply_color_swizzle(&sampler->border_color,
+                                            &tmp, swz, is_integer);
+         } else {
+            st_translate_color(&msamp->BorderColor,
+                               &sampler->border_color,
+                               texBaseFormat, is_integer);
+         }
        } else {
           st_translate_color(&msamp->BorderColor,
                              &sampler->border_color,
                              texBaseFormat, is_integer);
        }
     }
sampler->max_anisotropy = (msamp->MaxAnisotropy == 1.0 ?
                                0 : (GLuint) msamp->MaxAnisotropy);
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to