Mesa (master): i965/blorp: round to nearest when converting float into integer
Iago Toral Quiroga
itoral at kemper.freedesktop.org
Tue Feb 24 08:01:17 UTC 2015
Module: Mesa
Branch: master
Commit: fbd6eba72bd282297c5f49371e89a1c18cb24151
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=fbd6eba72bd282297c5f49371e89a1c18cb24151
Author: Samuel Iglesias Gonsalvez <siglesias at igalia.com>
Date: Thu Jan 22 16:01:57 2015 +0100
i965/blorp: round to nearest when converting float into integer
Fixes:
dEQP-GLES3.functional.fbo.blit.rect.out_of_bounds_nearest
dEQP-GLES3.functional.fbo.blit.rect.out_of_bounds_linear
dEQP-GLES3.functional.fbo.blit.rect.out_of_bounds_reverse_src_y_nearest
dEQP-GLES3.functional.fbo.blit.rect.out_of_bounds_reverse_src_y_linear
dEQP-GLES3.functional.fbo.blit.rect.out_of_bounds_reverse_dst_y_nearest
dEQP-GLES3.functional.fbo.blit.rect.out_of_bounds_reverse_dst_y_linear
dEQP-GLES3.functional.fbo.blit.rect.out_of_bounds_reverse_src_dst_x_nearest
dEQP-GLES3.functional.fbo.blit.rect.out_of_bounds_reverse_src_dst_x_linear
dEQP-GLES3.functional.fbo.blit.rect.out_of_bounds_reverse_src_dst_y_nearest
dEQP-GLES3.functional.fbo.blit.rect.out_of_bounds_reverse_src_dst_y_linear
No piglit regressions.
Signed-off-by: Samuel Iglesias Gonsalvez <siglesias at igalia.com>
Reviewed-by: Matt Turner <mattst88 at gmail.com>
---
src/mesa/drivers/dri/i965/brw_blorp_blit.cpp | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp b/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp
index 5c936cf..644cb41 100644
--- a/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp
+++ b/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp
@@ -1992,10 +1992,13 @@ brw_blorp_blit_params::brw_blorp_blit_params(struct brw_context *brw,
wm_prog_key.src_tiled_w = src.map_stencil_as_y_tiled;
wm_prog_key.dst_tiled_w = dst.map_stencil_as_y_tiled;
- x0 = wm_push_consts.dst_x0 = dst_x0;
- y0 = wm_push_consts.dst_y0 = dst_y0;
- x1 = wm_push_consts.dst_x1 = dst_x1;
- y1 = wm_push_consts.dst_y1 = dst_y1;
+ /* Round floating point values to nearest integer to avoid "off by one texel"
+ * kind of errors when blitting.
+ */
+ x0 = wm_push_consts.dst_x0 = roundf(dst_x0);
+ y0 = wm_push_consts.dst_y0 = roundf(dst_y0);
+ x1 = wm_push_consts.dst_x1 = roundf(dst_x1);
+ y1 = wm_push_consts.dst_y1 = roundf(dst_y1);
wm_push_consts.rect_grid_x1 = (minify(src_mt->logical_width0, src_level) *
wm_prog_key.x_scale - 1.0);
wm_push_consts.rect_grid_y1 = (minify(src_mt->logical_height0, src_level) *
More information about the mesa-commit
mailing list