Kaynağa Gözat

radeonsi: don't wrap the VS prolog in if (ES thread) .. endif

We can execute it unconditionally and the values computed for disabled
threads won't be used anyway.

Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3095>
master
Marek Olšák 6 yıl önce
ebeveyn
işleme
de4a4595f6
1 değiştirilmiş dosya ile 0 ekleme ve 25 silme
  1. 0
    25
      src/gallium/drivers/radeonsi/si_shader.c

+ 0
- 25
src/gallium/drivers/radeonsi/si_shader.c Dosyayı Görüntüle

@@ -7429,17 +7429,6 @@ static void si_build_vs_prolog_function(struct si_shader_context *ctx,
key->vs_prolog.num_input_sgprs + i, "");
}

LLVMValueRef original_ret = ret;
bool wrapped = false;
LLVMBasicBlockRef if_entry_block = NULL;

if (key->vs_prolog.is_monolithic && key->vs_prolog.as_ngg) {
LLVMValueRef ena = si_is_es_thread(ctx);
if_entry_block = LLVMGetInsertBlock(ctx->ac.builder);
ac_build_ifcc(&ctx->ac, ena, 11501);
wrapped = true;
}

/* Compute vertex load indices from instance divisors. */
LLVMValueRef instance_divisor_constbuf = NULL;

@@ -7495,20 +7484,6 @@ static void si_build_vs_prolog_function(struct si_shader_context *ctx,
ctx->args.arg_count + i, "");
}

if (wrapped) {
LLVMBasicBlockRef bbs[2] = {
LLVMGetInsertBlock(ctx->ac.builder),
if_entry_block,
};
ac_build_endif(&ctx->ac, 11501);

LLVMValueRef values[2] = {
ret,
original_ret
};
ret = ac_build_phi(&ctx->ac, LLVMTypeOf(ret), 2, values, bbs);
}

si_llvm_build_ret(ctx, ret);
}


Loading…
İptal
Kaydet