On Sat, Sep 3, 2016 at 11:44 AM, Kenneth Graunke <[email protected]> wrote:
> On Saturday, September 3, 2016 10:42:01 AM PDT Jason Ekstrand wrote: > > The result of this calculation goes into an fma() in the shader and we > > would like it to be as precise as possible. The division in particular, > > was a source of inprecision whenever dst1 - dst0 was not a power of two. > > This fixes a bunch of the new Vulkan CTS tests for blitting using a > > filtering of NEAREST. > > > > Signed-off-by: Jason Ekstrand <[email protected]> > > --- > > src/intel/blorp/blorp_blit.c | 6 +++--- > > 1 file changed, 3 insertions(+), 3 deletions(-) > > > > diff --git a/src/intel/blorp/blorp_blit.c b/src/intel/blorp/blorp_blit.c > > index f4d81e6..0cb8b1a 100644 > > --- a/src/intel/blorp/blorp_blit.c > > +++ b/src/intel/blorp/blorp_blit.c > > @@ -1256,7 +1256,7 @@ brw_blorp_setup_coord_transform(struct > brw_blorp_coord_transform *xform, > > GLfloat dst0, GLfloat dst1, > > bool mirror) > > { > > - float scale = (src1 - src0) / (dst1 - dst0); > > + double scale = (double)(src1 - src0) / (double)(dst1 - dst0); > > if (!mirror) { > > /* When not mirroring a coordinate (say, X), we need: > > * src_x - src_x0 = (dst_x - dst_x0 + 0.5) * scale > > @@ -1269,7 +1269,7 @@ brw_blorp_setup_coord_transform(struct > brw_blorp_coord_transform *xform, > > * so 0.5 provides the necessary correction. > > */ > > xform->multiplier = scale; > > - xform->offset = src0 + (-dst0 + 0.5f) * scale; > > + xform->offset = src0 + (-(double)dst0 + 0.5) * scale; > > } else { > > /* When mirroring X we need: > > * src_x - src_x0 = dst_x1 - dst_x - 0.5 > > @@ -1277,7 +1277,7 @@ brw_blorp_setup_coord_transform(struct > brw_blorp_coord_transform *xform, > > * src_x = src_x0 + (dst_x1 -dst_x - 0.5) * scale > > */ > > xform->multiplier = -scale; > > - xform->offset = src0 + (dst1 - 0.5f) * scale; > > + xform->offset = src0 + ((double)dst1 - 0.5) * scale; > > } > > } > > Sounds reasonable. > > Reviewed-by: Kenneth Graunke <[email protected]> > > (really more of an ack, but...) > Thanks!
_______________________________________________ mesa-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-dev
