Browse Source

ac: add has_ls_vgpr_init_bug to ac_gpu_info

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
tags/19.3-branchpoint
Samuel Pitoiset 6 years ago
parent
commit
fd54fc85aa

+ 3
- 0
src/amd/common/ac_gpu_info.c View File

@@ -488,6 +488,9 @@ bool ac_query_gpu_info(int fd, void *dev_p,
info->family == CHIP_VEGA10 ||
info->family == CHIP_RAVEN;

info->has_ls_vgpr_init_bug = 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++)

+ 1
- 0
src/amd/common/ac_gpu_info.h View File

@@ -162,6 +162,7 @@ struct radeon_info {
bool has_gfx9_scissor_bug;
bool has_tc_compat_zrange_bug;
bool has_msaa_sample_loc_bug;
bool has_ls_vgpr_init_bug;
};

bool ac_query_gpu_info(int fd, void *dev_p,

+ 0
- 2
src/gallium/drivers/radeonsi/si_pipe.c View File

@@ -1135,8 +1135,6 @@ radeonsi_screen_create_impl(struct radeon_winsys *ws,
#include "si_debug_options.h"
}

sscreen->has_ls_vgpr_init_bug = sscreen->info.family == CHIP_VEGA10 ||
sscreen->info.family == CHIP_RAVEN;
sscreen->use_ngg = sscreen->info.chip_class >= GFX10;
sscreen->use_ngg_streamout = sscreen->info.chip_class >= GFX10;


+ 0
- 1
src/gallium/drivers/radeonsi/si_pipe.h View File

@@ -495,7 +495,6 @@ struct si_screen {
bool has_out_of_order_rast;
bool assume_no_z_fights;
bool commutative_blend_add;
bool has_ls_vgpr_init_bug;
bool dpbb_allowed;
bool dfsm_allowed;
bool llvm_has_working_vgpr_indexing;

+ 1
- 1
src/gallium/drivers/radeonsi/si_shader.c View File

@@ -7406,7 +7406,7 @@ static void si_build_vs_prolog_function(struct si_shader_context *ctx,
si_init_exec_from_input(ctx, 3, 0);

if (key->vs_prolog.as_ls &&
ctx->screen->has_ls_vgpr_init_bug) {
ctx->screen->info.has_ls_vgpr_init_bug) {
/* If there are no HS threads, SPI loads the LS VGPRs
* starting at VGPR 0. Shift them back to where they
* belong.

+ 1
- 1
src/gallium/drivers/radeonsi/si_state_draw.c View File

@@ -1833,7 +1833,7 @@ static void si_draw_vbo(struct pipe_context *ctx, const struct pipe_draw_info *i
}

if (sctx->tes_shader.cso &&
sctx->screen->has_ls_vgpr_init_bug) {
sctx->screen->info.has_ls_vgpr_init_bug) {
/* Determine whether the LS VGPR fix should be applied.
*
* It is only required when num input CPs > num output CPs,

Loading…
Cancel
Save