diff options
author | Samuel Iglesias Gonsalvez <[email protected]> | 2015-01-22 16:01:57 +0100 |
---|---|---|
committer | Iago Toral Quiroga <[email protected]> | 2015-02-24 08:58:53 +0100 |
commit | fbd6eba72bd282297c5f49371e89a1c18cb24151 (patch) | |
tree | aac2f321ac4d344f7dc8dde9bc456716dbda8e74 | |
parent | 4a6c6c49a7236b1471df143a697195f0c11eb23c (diff) |
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 <[email protected]>
Reviewed-by: Matt Turner <[email protected]>
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_blorp_blit.cpp | 11 |
1 files 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 5c936cf8180..644cb4170b6 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) * |