From 2a1cc94d27c80929d91e38b4843333a5408d563e Mon Sep 17 00:00:00 2001 From: Jason Ekstrand Date: Fri, 10 Jun 2016 21:11:02 -0700 Subject: [PATCH] i965/gen4: Subtract 1 from buffer sizes The PRM states that the values put in Width, Height, and Depth should be various bits from the value size - 1. We seem to have done this wrong more-or-less from the start. Reviewed-by: Chad Versace Cc: "11.1 11.2 12.0" --- src/mesa/drivers/dri/i965/brw_wm_surface_state.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c index 7b2953c..cfce2c9 100644 --- a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c +++ b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c @@ -237,9 +237,9 @@ gen4_emit_buffer_surface_state(struct brw_context *brw, surface_format << BRW_SURFACE_FORMAT_SHIFT | (brw->gen >= 6 ? BRW_SURFACE_RC_READ_WRITE : 0); surf[1] = (bo ? bo->offset64 : 0) + buffer_offset; /* reloc */ - surf[2] = (buffer_size & 0x7f) << BRW_SURFACE_WIDTH_SHIFT | - ((buffer_size >> 7) & 0x1fff) << BRW_SURFACE_HEIGHT_SHIFT; - surf[3] = ((buffer_size >> 20) & 0x7f) << BRW_SURFACE_DEPTH_SHIFT | + surf[2] = ((buffer_size - 1) & 0x7f) << BRW_SURFACE_WIDTH_SHIFT | + (((buffer_size - 1) >> 7) & 0x1fff) << BRW_SURFACE_HEIGHT_SHIFT; + surf[3] = (((buffer_size - 1) >> 20) & 0x7f) << BRW_SURFACE_DEPTH_SHIFT | (pitch - 1) << BRW_SURFACE_PITCH_SHIFT; /* Emit relocation to surface contents. The 965 PRM, Volume 4, section -- 2.7.4