[Mesa-dev] [PATCH] blorp: Fix 16x multisample scaled blits
Jason Ekstrand
jason at jlekstrand.net
Thu Jun 2 18:53:34 UTC 2016
On Thu, Jun 2, 2016 at 11:34 AM, Anuj Phogat <anuj.phogat at gmail.com> wrote:
> Piglit test ext_framebuffer_multisample_blit_scaled-blit-scaled
> (with added 16x sample support) now passes with this patch.
>
> Signed-off-by: Anuj Phogat <anuj.phogat at gmail.com>
> Cc: Jason Ekstrand <jason at jlekstrand.net>
> Cc: "12.0" <mesa-stable at lists.freedesktop.org>
>
Reviewed-by: Jason Ekstrand <jason at jlekstrand.net>
Thanks for fixing my mess!
> ---
> src/mesa/drivers/dri/i965/brw_blorp_blit.cpp | 17 ++++++++++-------
> 1 file changed, 10 insertions(+), 7 deletions(-)
>
> diff --git a/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp
> b/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp
> index 1b8e112..782d285 100644
> --- a/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp
> +++ b/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp
> @@ -1106,9 +1106,9 @@ blorp_nir_manual_blend_bilinear(nir_builder *b,
> nir_ssa_def *pos,
> * In the case of 16x MSAA the two layouts don't match.
> * Sample index layout: Sample number layout:
> * --------------------- ---------------------
> - * | 0 | 1 | 2 | 3 | | 15 | 10 | 9 | 13 |
> + * | 0 | 1 | 2 | 3 | | 15 | 10 | 9 | 7 |
> * --------------------- ---------------------
> - * | 4 | 5 | 6 | 7 | | 4 | 1 | 7 | 3 |
> + * | 4 | 5 | 6 | 7 | | 4 | 1 | 3 | 13 |
> * --------------------- ---------------------
> * | 8 | 9 | 10 | 11 | | 12 | 2 | 0 | 6 |
> * --------------------- ---------------------
> @@ -1116,7 +1116,7 @@ blorp_nir_manual_blend_bilinear(nir_builder *b,
> nir_ssa_def *pos,
> * --------------------- ---------------------
> *
> * This is equivalent to
> - * S' = (0xfa9d4173c206b85e >> (S * 4)) & 0xf
> + * S' = (0xe58b602cd31479af >> (S * 4)) & 0xf
> */
> nir_ssa_def *frac = nir_ffract(b, sample_coords);
> nir_ssa_def *sample =
> @@ -1130,11 +1130,11 @@ blorp_nir_manual_blend_bilinear(nir_builder *b,
> nir_ssa_def *pos,
> nir_imm_int(b, 0xf));
> } else if (tex_samples == 16) {
> nir_ssa_def *sample_low =
> - nir_iand(b, nir_ishr(b, nir_imm_int(b, 0xc206b85e),
> + nir_iand(b, nir_ishr(b, nir_imm_int(b, 0xd31479af),
> nir_ishl(b, sample, nir_imm_int(b, 2))),
> nir_imm_int(b, 0xf));
> nir_ssa_def *sample_high =
> - nir_iand(b, nir_ishr(b, nir_imm_int(b, 0xfa9d4173),
> + nir_iand(b, nir_ishr(b, nir_imm_int(b, 0xe58b602c),
> nir_ishl(b, nir_iadd(b, sample,
> nir_imm_int(b, -8)),
> nir_imm_int(b, 2))),
> @@ -1761,8 +1761,11 @@ brw_blorp_blit_miptrees(struct brw_context *brw,
> /* Scaling factors used for bilinear filtering in multisample scaled
> * blits.
> */
> - wm_prog_key.x_scale = 2.0f;
> - wm_prog_key.y_scale = src_mt->num_samples / 2.0f;
> + if (src_mt->num_samples == 16)
> + wm_prog_key.x_scale = 4.0f;
> + else
> + wm_prog_key.x_scale = 2.0f;
> + wm_prog_key.y_scale = src_mt->num_samples / wm_prog_key.x_scale;
>
> if (filter == GL_LINEAR &&
> params.src.num_samples <= 1 && params.dst.num_samples <= 1)
> --
> 2.5.5
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20160602/11bcf5dc/attachment.html>
More information about the mesa-dev
mailing list