radeonsi: handle fixed-func TCS shader create failure
authorMarek Olšák <marek.olsak@amd.com>
Thu, 10 Sep 2015 16:31:33 +0000 (18:31 +0200)
committerMarek Olšák <marek.olsak@amd.com>
Thu, 24 Sep 2015 17:51:43 +0000 (19:51 +0200)
Cc: 11.0 <mesa-stable@lists.freedesktop.org>
Acked-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
src/gallium/drivers/radeonsi/si_state_shaders.c

index 74e113668aacc13724b1248d2b1fdc125bb52886..43d2e88d102a326255af434daa682c6d839794c7 100644 (file)
@@ -1351,7 +1351,6 @@ static void si_generate_fixed_func_tcs(struct si_context *sctx)
 
        sctx->fixed_func_tcs_shader =
                ureg_create_shader_and_destroy(ureg, &sctx->b.b);
-       assert(sctx->fixed_func_tcs_shader);
 }
 
 static void si_update_vgt_shader_config(struct si_context *sctx)
@@ -1420,8 +1419,12 @@ bool si_update_shaders(struct si_context *sctx)
                        si_shader_select(ctx, sctx->tcs_shader);
                        si_pm4_bind_state(sctx, hs, sctx->tcs_shader->current->pm4);
                } else {
-                       if (!sctx->fixed_func_tcs_shader)
+                       if (!sctx->fixed_func_tcs_shader) {
                                si_generate_fixed_func_tcs(sctx);
+                               if (!sctx->fixed_func_tcs_shader)
+                                       return false;
+                       }
+
                        si_shader_select(ctx, sctx->fixed_func_tcs_shader);
                        si_pm4_bind_state(sctx, hs,
                                          sctx->fixed_func_tcs_shader->current->pm4);