diff options
author | Marek Olšák <[email protected]> | 2017-06-10 22:13:48 +0200 |
---|---|---|
committer | Marek Olšák <[email protected]> | 2017-06-22 01:51:02 +0200 |
commit | 39ab9fb36c8c41ed06cd8f272d17285c6c5cd56b (patch) | |
tree | 57c568c048aa9342a000b2516d846adeed3d16c0 /src | |
parent | 588371b77229324c91a59180a2d623dde9830957 (diff) |
st/mesa: sink code needed for apply_texture_swizzle_to_border_color
Reviewed-by: Timothy Arceri <[email protected]>
Reviewed-by: Nicolai Hähnle <[email protected]>
Diffstat (limited to 'src')
-rw-r--r-- | src/mesa/state_tracker/st_atom_sampler.c | 61 |
1 files 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 2a7353574e9..1ce5769c8cd 100644 --- a/src/mesa/state_tracker/st_atom_sampler.c +++ b/src/mesa/state_tracker/st_atom_sampler.c @@ -176,37 +176,42 @@ st_convert_sampler(const struct st_context *st, 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, |