Module: Mesa
Branch: main
Commit: ec814f7d366953803a9169d83ff3876595f98bf6
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=ec814f7d366953803a9169d83ff3876595f98bf6

Author: Mike Blumenkrantz <[email protected]>
Date:   Thu Jun 10 06:31:22 2021 -0400

zink: add some null checks for shader variant key generation

Reviewed-by: Hoe Hao Cheng <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12532>

---

 src/gallium/drivers/zink/zink_program.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/gallium/drivers/zink/zink_program.c 
b/src/gallium/drivers/zink/zink_program.c
index a704be9de56..f710885cff5 100644
--- a/src/gallium/drivers/zink/zink_program.c
+++ b/src/gallium/drivers/zink/zink_program.c
@@ -110,7 +110,7 @@ shader_key_vs_gen(struct zink_context *ctx, struct 
zink_shader *zs,
    struct zink_vs_key *vs_key = &key->key.vs;
    key->size = sizeof(struct zink_vs_key);
 
-   vs_key->clip_halfz = ctx->rast_state->base.clip_halfz;
+   vs_key->clip_halfz = ctx->rast_state && ctx->rast_state->base.clip_halfz;
    switch (zs->nir->info.stage) {
    case MESA_SHADER_VERTEX:
       vs_key->last_vertex_stage = !shaders[PIPE_SHADER_TESS_EVAL] && 
!shaders[PIPE_SHADER_GEOMETRY];
@@ -142,10 +142,12 @@ shader_key_fs_gen(struct zink_context *ctx, struct 
zink_shader *zs,
    if (zs->nir->info.outputs_written & (1 << FRAG_RESULT_SAMPLE_MASK))
       fs_key->samples = !!ctx->fb_state.samples;
    fs_key->force_dual_color_blend = 
screen->driconf.dual_color_blend_by_location &&
+                                    ctx->gfx_pipeline_state.blend_state &&
                                     
ctx->gfx_pipeline_state.blend_state->dual_src_blend &&
                                     
ctx->gfx_pipeline_state.blend_state->attachments[1].blendEnable;
    if (((shaders[PIPE_SHADER_GEOMETRY] && 
shaders[PIPE_SHADER_GEOMETRY]->nir->info.gs.output_primitive == GL_POINTS) ||
-       ctx->gfx_prim_mode == PIPE_PRIM_POINTS) && 
ctx->rast_state->base.point_quad_rasterization && 
ctx->rast_state->base.sprite_coord_enable) {
+       ctx->gfx_prim_mode == PIPE_PRIM_POINTS) &&
+       ctx->rast_state &&ctx->rast_state->base.point_quad_rasterization && 
ctx->rast_state->base.sprite_coord_enable) {
       fs_key->coord_replace_bits = ctx->rast_state->base.sprite_coord_enable;
       fs_key->coord_replace_yinvert = 
!!ctx->rast_state->base.sprite_coord_mode;
    }

Reply via email to