aux/draw: check for lines when setting clipping-mode

Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17284>
This commit is contained in:
Erik Faye-Lund 2023-05-03 19:24:58 +02:00 committed by Marge Bot
parent 43802ea3b5
commit 5fa9436617
2 changed files with 12 additions and 8 deletions

View file

@ -81,8 +81,10 @@ fetch_pipeline_prepare(struct draw_pt_middle_end *middle,
u_assembled_prim(prim));
unsigned nr_vs_outputs = draw_total_vs_outputs(draw);
unsigned nr = MAX2(vs->info.num_inputs, nr_vs_outputs);
unsigned point_clip = draw->rasterizer->fill_front == PIPE_POLYGON_MODE_POINT ||
gs_out_prim == PIPE_PRIM_POINTS;
unsigned point_line_clip = draw->rasterizer->fill_front == PIPE_POLYGON_MODE_POINT ||
draw->rasterizer->fill_front == PIPE_POLYGON_MODE_LINE ||
gs_out_prim == PIPE_PRIM_POINTS ||
gs_out_prim == PIPE_PRIM_LINE_STRIP;
if (gs) {
nr = MAX2(nr, gs->info.num_outputs + 1);
@ -114,8 +116,8 @@ fetch_pipeline_prepare(struct draw_pt_middle_end *middle,
draw->clip_xy,
draw->clip_z,
draw->clip_user,
point_clip ? draw->guard_band_points_lines_xy :
draw->guard_band_xy,
point_line_clip ? draw->guard_band_points_lines_xy :
draw->guard_band_xy,
draw->bypass_viewport,
draw->rasterizer->clip_halfz,
(draw->vs.edgeflag_output ? TRUE : FALSE));

View file

@ -289,8 +289,10 @@ llvm_middle_end_prepare(struct draw_pt_middle_end *middle,
const enum pipe_prim_type out_prim =
gs ? gs->output_primitive : tes ? get_tes_output_prim(tes) :
u_assembled_prim(in_prim);
unsigned point_clip = draw->rasterizer->fill_front == PIPE_POLYGON_MODE_POINT ||
out_prim == PIPE_PRIM_POINTS;
unsigned point_line_clip = draw->rasterizer->fill_front == PIPE_POLYGON_MODE_POINT ||
draw->rasterizer->fill_front == PIPE_POLYGON_MODE_LINE ||
out_prim == PIPE_PRIM_POINTS ||
u_reduced_prim(out_prim) == PIPE_PRIM_LINES;
fpme->input_prim = in_prim;
fpme->opt = opt;
@ -299,8 +301,8 @@ llvm_middle_end_prepare(struct draw_pt_middle_end *middle,
draw->clip_xy,
draw->clip_z,
draw->clip_user,
point_clip ? draw->guard_band_points_lines_xy :
draw->guard_band_xy,
point_line_clip ? draw->guard_band_points_lines_xy :
draw->guard_band_xy,
draw->bypass_viewport,
draw->rasterizer->clip_halfz,
(draw->vs.edgeflag_output ? TRUE : FALSE));