On Tue, Jun 13, 2017 at 8:10 AM, Timothy Arceri <tarc...@itsqueeze.com> wrote: > > > 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:
I don't understand. What are you confused about? Marek > > 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