radeonsi: don't pass NULL into si_get_nir_shader
so that we always have the shader key there Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13393>
This commit is contained in:
parent
3350957f3c
commit
62798d2c1f
|
@ -1369,10 +1369,8 @@ struct nir_shader *si_get_nir_shader(struct si_shader_selector *sel,
|
|||
|
||||
bool inline_uniforms = false;
|
||||
uint32_t *inlined_uniform_values;
|
||||
if (key) {
|
||||
si_get_inline_uniform_state((union si_shader_key*)key, sel->pipe_shader_type,
|
||||
&inline_uniforms, &inlined_uniform_values);
|
||||
}
|
||||
si_get_inline_uniform_state((union si_shader_key*)key, sel->pipe_shader_type,
|
||||
&inline_uniforms, &inlined_uniform_values);
|
||||
|
||||
if (inline_uniforms) {
|
||||
assert(*free_nir);
|
||||
|
|
|
@ -1151,14 +1151,18 @@ bool si_llvm_compile_shader(struct si_screen *sscreen, struct ac_llvm_compiler *
|
|||
|
||||
/* VS as LS main part */
|
||||
ctx.next_shader_sel = ctx.shader->selector;
|
||||
nir = si_get_nir_shader(ls, NULL, &free_nir);
|
||||
|
||||
struct si_shader shader_ls = {};
|
||||
shader_ls.selector = ls;
|
||||
shader_ls.key.ge.part.vs.prolog = shader->key.ge.part.tcs.ls_prolog;
|
||||
shader_ls.key.ge.as_ls = 1;
|
||||
shader_ls.key.ge.mono = shader->key.ge.mono;
|
||||
shader_ls.key.ge.opt = shader->key.ge.opt;
|
||||
shader_ls.key.ge.opt.inline_uniforms = false; /* only TCS can inline uniforms */
|
||||
shader_ls.is_monolithic = true;
|
||||
|
||||
nir = si_get_nir_shader(ls, &shader_ls.key, &free_nir);
|
||||
|
||||
if (!si_llvm_translate_nir(&ctx, &shader_ls, nir, free_nir, false)) {
|
||||
si_llvm_dispose(&ctx);
|
||||
return false;
|
||||
|
@ -1213,15 +1217,18 @@ bool si_llvm_compile_shader(struct si_screen *sscreen, struct ac_llvm_compiler *
|
|||
gs_prolog = ctx.main_fn;
|
||||
|
||||
/* ES main part */
|
||||
nir = si_get_nir_shader(es, NULL, &free_nir);
|
||||
struct si_shader shader_es = {};
|
||||
shader_es.selector = es;
|
||||
shader_es.key.ge.part.vs.prolog = shader->key.ge.part.gs.vs_prolog;
|
||||
shader_es.key.ge.as_es = 1;
|
||||
shader_es.key.ge.as_ngg = shader->key.ge.as_ngg;
|
||||
shader_es.key.ge.mono = shader->key.ge.mono;
|
||||
shader_es.key.ge.opt = shader->key.ge.opt;
|
||||
shader_es.key.ge.opt.inline_uniforms = false; /* only GS can inline uniforms */
|
||||
shader_es.is_monolithic = true;
|
||||
|
||||
nir = si_get_nir_shader(es, &shader_es.key, &free_nir);
|
||||
|
||||
if (!si_llvm_translate_nir(&ctx, &shader_es, nir, free_nir, false)) {
|
||||
si_llvm_dispose(&ctx);
|
||||
return false;
|
||||
|
|
|
@ -643,7 +643,7 @@ static bool si_check_blend_dst_sampler_noop(struct si_context *sctx)
|
|||
struct si_shader_selector *sel = sctx->shader.ps.cso;
|
||||
bool free_nir;
|
||||
if (unlikely(sel->info.writes_1_if_tex_is_1 == 0xff)) {
|
||||
struct nir_shader *nir = si_get_nir_shader(sel, NULL, &free_nir);
|
||||
struct nir_shader *nir = si_get_nir_shader(sel, &sctx->shader.ps.key, &free_nir);
|
||||
|
||||
/* Determine if this fragment shader always writes vec4(1) if a specific texture
|
||||
* is all 1s.
|
||||
|
|
Loading…
Reference in New Issue