mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-01 16:48:07 +02:00
r300: disable clip-discard watermark for triangles
Commit0d4aa5f55fintroduced the watermark to optimize the guardband state changes and always computed new_distance as MAX2(distance, watermark). That is correct for point/line paths where distance > 0, but it keeps a non-zero discard distance alive when the next draw sets distance = 0 (triangles). This leaks wide point/line clip-discard state into later triangle draws and can clip away large parts of geometry (as observed in Sauerbraten). Only apply the watermark when distance > 0 and reset it to zero otherwise so triangle draws disable clip-discard as intended. Fixes:0d4aa5f55f("r300: pop-free clipping") Reviewed-by: Marek Olšák <marek.olsak@amd.com> Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/14959 Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40223>
This commit is contained in:
parent
8f10e2886c
commit
ce33f82f83
1 changed files with 2 additions and 1 deletions
|
|
@ -147,7 +147,8 @@ void r300_set_clip_discard_distance(struct r300_context *r300, float distance)
|
|||
r300->min_clip_discard_distance_watermark = MIN2(distance, 6.0f);
|
||||
}
|
||||
|
||||
float new_distance = MAX2(distance, r300->min_clip_discard_distance_watermark);
|
||||
float new_distance = distance > 0.0f ?
|
||||
MAX2(distance, r300->min_clip_discard_distance_watermark) : 0.0f;
|
||||
|
||||
if (r300->current_clip_discard_distance != new_distance) {
|
||||
r300->current_clip_discard_distance = new_distance;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue