diff --git a/src/gallium/drivers/zink/zink_program.c b/src/gallium/drivers/zink/zink_program.c index 463d58da4c3..41ddfb55f81 100644 --- a/src/gallium/drivers/zink/zink_program.c +++ b/src/gallium/drivers/zink/zink_program.c @@ -2139,6 +2139,10 @@ zink_set_primitive_emulation_keys(struct zink_context *ctx) ctx->rast_state->base.line_stipple_enable && !ctx->num_so_targets; + bool lower_point_smooth = ctx->gfx_pipeline_state.rast_prim == PIPE_PRIM_POINTS && + screen->driconf.emulate_point_smooth && + ctx->rast_state->base.point_smooth; + if (zink_get_fs_key(ctx)->lower_line_stipple != lower_line_stipple) { assert(zink_get_gs_key(ctx)->lower_line_stipple == zink_get_fs_key(ctx)->lower_line_stipple); @@ -2158,6 +2162,10 @@ zink_set_primitive_emulation_keys(struct zink_context *ctx) zink_set_gs_key(ctx)->lower_line_smooth = lower_line_smooth; } + if (zink_get_fs_key(ctx)->lower_point_smooth != lower_point_smooth) { + zink_set_fs_key(ctx)->lower_point_smooth = lower_point_smooth; + } + if (lower_line_stipple || lower_line_smooth || zink_get_gs_key(ctx)->lower_gl_point) { enum pipe_shader_type prev_vertex_stage = diff --git a/src/gallium/drivers/zink/zink_shader_keys.h b/src/gallium/drivers/zink/zink_shader_keys.h index ccc160f0d2d..3bbf2bece2f 100644 --- a/src/gallium/drivers/zink/zink_shader_keys.h +++ b/src/gallium/drivers/zink/zink_shader_keys.h @@ -92,8 +92,9 @@ struct zink_fs_key { /* non-optimal bits after this point */ bool lower_line_stipple : 1; bool lower_line_smooth : 1; + bool lower_point_smooth : 1; bool robust_access : 1; - uint16_t pad2 : 13; + uint16_t pad2 : 12; }; struct zink_tcs_key {