radeonsi/gfx9: prevent shader-db crashes
- don't precompile LS and ES (they don't exist on GFX9), compile as VS instead - don't precompile HS and GS (we don't have LS and ES parts) Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
This commit is contained in:
parent
fdef2f0fd1
commit
a65afda768
|
@ -1876,7 +1876,11 @@ void si_init_shader_selector_async(void *job, int thread_index)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Pre-compilation. */
|
/* Pre-compilation. */
|
||||||
if (sscreen->b.debug_flags & DBG_PRECOMPILE) {
|
if (sscreen->b.debug_flags & DBG_PRECOMPILE &&
|
||||||
|
/* GFX9 needs LS or ES for compilation, which we don't have here. */
|
||||||
|
(sscreen->b.chip_class <= VI ||
|
||||||
|
(sel->type != PIPE_SHADER_TESS_CTRL &&
|
||||||
|
sel->type != PIPE_SHADER_GEOMETRY))) {
|
||||||
struct si_shader_ctx_state state = {sel};
|
struct si_shader_ctx_state state = {sel};
|
||||||
struct si_shader_key key;
|
struct si_shader_key key;
|
||||||
|
|
||||||
|
@ -1885,6 +1889,12 @@ void si_init_shader_selector_async(void *job, int thread_index)
|
||||||
sel->so.num_outputs != 0,
|
sel->so.num_outputs != 0,
|
||||||
&key);
|
&key);
|
||||||
|
|
||||||
|
/* GFX9 doesn't have LS and ES. */
|
||||||
|
if (sscreen->b.chip_class >= GFX9) {
|
||||||
|
key.as_ls = 0;
|
||||||
|
key.as_es = 0;
|
||||||
|
}
|
||||||
|
|
||||||
/* Set reasonable defaults, so that the shader key doesn't
|
/* Set reasonable defaults, so that the shader key doesn't
|
||||||
* cause any code to be eliminated.
|
* cause any code to be eliminated.
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in New Issue