mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-25 08:40:11 +01:00
lima: increase epsilon for depthrange near == far
When the application sets depthrange near == far, lima inserts an 'epsilon' difference of decreasing 'near' by 1 unit, to prevent application bugs. For some specific values of depthrange this does not seem to be sufficient, presumably due to precision limitations. Increase the difference by also incrementing the 'far' distance in this case, to further avoid bugs. Signed-off-by: Erico Nunes <nunes.erico@gmail.com> Reviewed-by: Vasily Khoruzhick <anarsoul@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9933>
This commit is contained in:
parent
faf10bd49d
commit
b071d98c04
1 changed files with 7 additions and 2 deletions
|
|
@ -648,9 +648,14 @@ lima_pack_render_state(struct lima_context *ctx, const struct pipe_draw_info *in
|
|||
near = float_to_ushort(ctx->viewport.near);
|
||||
far = float_to_ushort(ctx->viewport.far);
|
||||
|
||||
/* Subtract epsilon from 'near' if far == near. Make sure we don't get overflow */
|
||||
if ((far == near) && (near != 0))
|
||||
/* Insert a small 'epsilon' difference between 'near' and 'far' when
|
||||
* they are equal, to avoid application bugs. */
|
||||
if (far == near) {
|
||||
if (near > 0)
|
||||
near--;
|
||||
if (far < USHRT_MAX)
|
||||
far++;
|
||||
}
|
||||
|
||||
/* overlap with plbu? any place can remove one? */
|
||||
render->depth_range = near | (far << 16);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue