From 1bf2572dff511562cc23b3d9e920e101f0aea134 Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Fri, 23 Aug 2019 08:50:06 +0200 Subject: [PATCH] ac: add has_msaa_sample_loc_bug to ac_gpu_info MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Samuel Pitoiset Reviewed-by: Bas Nieuwenhuizen Reviewed-by: Marek Olšák --- src/amd/common/ac_gpu_info.c | 5 +++++ src/amd/common/ac_gpu_info.h | 1 + src/gallium/drivers/radeonsi/si_pipe.c | 4 ---- src/gallium/drivers/radeonsi/si_pipe.h | 1 - src/gallium/drivers/radeonsi/si_state.c | 4 ++-- 5 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/amd/common/ac_gpu_info.c b/src/amd/common/ac_gpu_info.c index 49ad93407ec..b366dc6be19 100644 --- a/src/amd/common/ac_gpu_info.c +++ b/src/amd/common/ac_gpu_info.c @@ -483,6 +483,11 @@ bool ac_query_gpu_info(int fd, void *dev_p, info->has_tc_compat_zrange_bug = info->chip_class >= GFX8 && info->chip_class <= GFX9; + info->has_msaa_sample_loc_bug = (info->family >= CHIP_POLARIS10 && + info->family <= CHIP_POLARIS12) || + info->family == CHIP_VEGA10 || + info->family == CHIP_RAVEN; + /* Get the number of good compute units. */ info->num_good_compute_units = 0; for (i = 0; i < info->max_se; i++) diff --git a/src/amd/common/ac_gpu_info.h b/src/amd/common/ac_gpu_info.h index f676600e5b9..ba09f38edb8 100644 --- a/src/amd/common/ac_gpu_info.h +++ b/src/amd/common/ac_gpu_info.h @@ -161,6 +161,7 @@ struct radeon_info { /* Hardware bugs. */ bool has_gfx9_scissor_bug; bool has_tc_compat_zrange_bug; + bool has_msaa_sample_loc_bug; }; bool ac_query_gpu_info(int fd, void *dev_p, diff --git a/src/gallium/drivers/radeonsi/si_pipe.c b/src/gallium/drivers/radeonsi/si_pipe.c index abb18236956..d3dcab3ccce 100644 --- a/src/gallium/drivers/radeonsi/si_pipe.c +++ b/src/gallium/drivers/radeonsi/si_pipe.c @@ -1135,10 +1135,6 @@ radeonsi_screen_create_impl(struct radeon_winsys *ws, #include "si_debug_options.h" } - sscreen->has_msaa_sample_loc_bug = (sscreen->info.family >= CHIP_POLARIS10 && - sscreen->info.family <= CHIP_POLARIS12) || - sscreen->info.family == CHIP_VEGA10 || - sscreen->info.family == CHIP_RAVEN; sscreen->has_ls_vgpr_init_bug = sscreen->info.family == CHIP_VEGA10 || sscreen->info.family == CHIP_RAVEN; sscreen->use_ngg = sscreen->info.chip_class >= GFX10; diff --git a/src/gallium/drivers/radeonsi/si_pipe.h b/src/gallium/drivers/radeonsi/si_pipe.h index 6e69f1717f6..2d0b83fcf33 100644 --- a/src/gallium/drivers/radeonsi/si_pipe.h +++ b/src/gallium/drivers/radeonsi/si_pipe.h @@ -495,7 +495,6 @@ struct si_screen { bool has_out_of_order_rast; bool assume_no_z_fights; bool commutative_blend_add; - bool has_msaa_sample_loc_bug; bool has_ls_vgpr_init_bug; bool dpbb_allowed; bool dfsm_allowed; diff --git a/src/gallium/drivers/radeonsi/si_state.c b/src/gallium/drivers/radeonsi/si_state.c index d957e76c26d..566954b1887 100644 --- a/src/gallium/drivers/radeonsi/si_state.c +++ b/src/gallium/drivers/radeonsi/si_state.c @@ -1034,7 +1034,7 @@ static void si_bind_rs_state(struct pipe_context *ctx, void *state) si_mark_atom_dirty(sctx, &sctx->atoms.s.db_render_state); /* Update the small primitive filter workaround if necessary. */ - if (sctx->screen->has_msaa_sample_loc_bug && + if (sctx->screen->info.has_msaa_sample_loc_bug && sctx->framebuffer.nr_samples > 1) si_mark_atom_dirty(sctx, &sctx->atoms.s.msaa_sample_locs); } @@ -3466,7 +3466,7 @@ static void si_emit_msaa_sample_locs(struct si_context *sctx) struct radeon_cmdbuf *cs = sctx->gfx_cs; struct si_state_rasterizer *rs = sctx->queued.named.rasterizer; unsigned nr_samples = sctx->framebuffer.nr_samples; - bool has_msaa_sample_loc_bug = sctx->screen->has_msaa_sample_loc_bug; + bool has_msaa_sample_loc_bug = sctx->screen->info.has_msaa_sample_loc_bug; /* Smoothing (only possible with nr_samples == 1) uses the same * sample locations as the MSAA it simulates. -- 2.30.2