diff options
author | Caio Marcelo de Oliveira Filho <[email protected]> | 2019-08-22 11:23:51 -0700 |
---|---|---|
committer | Caio Marcelo de Oliveira Filho <[email protected]> | 2019-09-10 14:36:46 -0700 |
commit | 1a12b0fe36fa50d8591c998723e25bdfbdea8b9e (patch) | |
tree | 9c9b20527c981b5ea6df8a508d80f5beee77d61f | |
parent | b4b39d9859f96ea18fa14001b96b9fb865ba9576 (diff) |
mesa/st: Don't expect prog->nir to already exist
There's no such case, if we load prog->nir from the shader cache, we
shouldn't hit this path.
Suggested-by: Kenneth Graunke <[email protected]>
Reviewed-by: Timothy Arceri <[email protected]>
-rw-r--r-- | src/mesa/state_tracker/st_glsl_to_nir.cpp | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/src/mesa/state_tracker/st_glsl_to_nir.cpp b/src/mesa/state_tracker/st_glsl_to_nir.cpp index fead0ccc625..39203435515 100644 --- a/src/mesa/state_tracker/st_glsl_to_nir.cpp +++ b/src/mesa/state_tracker/st_glsl_to_nir.cpp @@ -633,6 +633,8 @@ st_link_nir(struct gl_context *ctx, struct gl_program *prog = shader->Program; _mesa_copy_linked_program_data(shader_program, shader); + assert(!prog->nir); + if (shader_program->data->spirv) { const nir_shader_compiler_options *options = st->ctx->Const.ShaderCompilerOptions[shader->Stage].NirOptions; @@ -640,7 +642,6 @@ st_link_nir(struct gl_context *ctx, prog->Parameters = _mesa_new_parameter_list(); /* Parameters will be filled during NIR linking. */ - /* TODO: Properly handle or dismiss `if (prog->nir)` case. */ prog->nir = _mesa_spirv_to_nir(ctx, shader_program, shader->Stage, options); set_st_program(prog, shader_program, prog->nir); } else { @@ -670,11 +671,9 @@ st_link_nir(struct gl_context *ctx, st->ctx->Const.ShaderCompilerOptions[prog->info.stage].NirOptions; assert(options); - if (!prog->nir) { - prog->nir = glsl_to_nir(st->ctx, shader_program, shader->Stage, options); - set_st_program(prog, shader_program, prog->nir); - st_nir_preprocess(st, prog, shader_program, shader->Stage); - } + prog->nir = glsl_to_nir(st->ctx, shader_program, shader->Stage, options); + set_st_program(prog, shader_program, prog->nir); + st_nir_preprocess(st, prog, shader_program, shader->Stage); } last_stage = i; |