FYI, I don't consider this patch to be the correct approach for solving the problem. There are other callers that could run into trouble; in particular any super-small blits like 0.5-wide. I think we likely want to either do a full audit of all blorp_blit callers or somehow solve it in blorp_blit. The fact that we're using floats at all bothers me quite a bit because it means we're likely loosing some precision somewhere.
--Jason On Mon, Oct 29, 2018 at 11:27 AM Vadim Shovkoplias < vadim.shovkopl...@gmail.com> wrote: > Hi Jason, > > Looks like there is an issue with the float comparison. It works perfectly > fine for me if it is compared with some precision: > > if( (fabsf(*dstX1 - *dstX0) < 1e-8F) || (fabsf(*dstY1 - *dstY0) < 1e-8F) ) > { > return true; > > > > пн, 1 окт. 2018 г. в 19:24, Eric Engestrom <eric.engest...@intel.com>: > >> On Monday, 2018-10-01 11:04:09 +0200, Juan A. Suarez Romero wrote: >> > On Tue, 2018-09-11 at 11:15 -0500, Jason Ekstrand wrote: >> > > Cc: mesa-sta...@lists.freedesktop.org >> > > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=107892 >> > > --- >> > > src/mesa/drivers/dri/i965/brw_meta_util.c | 3 +++ >> > > 1 file changed, 3 insertions(+) >> > > >> > >> > This has been reviewed, but not pushed yet. >> > >> > >> > J.A. >> > >> > > diff --git a/src/mesa/drivers/dri/i965/brw_meta_util.c >> b/src/mesa/drivers/dri/i965/brw_meta_util.c >> > > index 908b0989769..6714d96237c 100644 >> > > --- a/src/mesa/drivers/dri/i965/brw_meta_util.c >> > > +++ b/src/mesa/drivers/dri/i965/brw_meta_util.c >> > > @@ -247,6 +247,9 @@ brw_meta_mirror_clip_and_scissor(const struct >> gl_context *ctx, >> > > clip_src_y1, clip_dst_y1, clip_dst_y0, >> > > scaleY, false); >> > > >> > > + if (*dstX0 == *dstX1 || *dstY0 == *dstY1) >> > > + return true; >> >> This comes right after this code (few lines above in the same function): >> >> float scaleX = (float) (*srcX1 - *srcX0) / (*dstX1 - *dstX0); >> float scaleY = (float) (*srcY1 - *srcY0) / (*dstY1 - *dstY0); >> >> if *dstX0 == *dstX1, that would be a division by 0, so I don't think that >> this new `if *dstX0 == *dstX1` is reachable (same for *dstY0 == *dstY1) >> >> > > + >> > > /* Account for the fact that in the system framebuffer, the >> origin is at >> > > * the lower left. >> > > */ >> > >> > _______________________________________________ >> > mesa-dev mailing list >> > mesa-dev@lists.freedesktop.org >> > https://lists.freedesktop.org/mailman/listinfo/mesa-dev >> _______________________________________________ >> mesa-dev mailing list >> mesa-dev@lists.freedesktop.org >> https://lists.freedesktop.org/mailman/listinfo/mesa-dev >> > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev >
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev