i965: "Fix" aux offsets
authorBen Widawsky <ben@bwidawsk.net>
Wed, 16 Nov 2016 01:35:37 +0000 (17:35 -0800)
committerBen Widawsky <ben@bwidawsk.net>
Wed, 16 Nov 2016 19:24:33 +0000 (11:24 -0800)
When 1 BO is used for aux data, it needs to point to the correct offset,
which will not be the BOs offset but instead an offset from the BOs
offset. Since today there are always multiple BOs for aux, this doesn't
actually change anything.

Cc: Jason Ekstrand <jason@jlekstrand.net>
Signed-off-by: Ben Widawsky <ben@bwidawsk.net>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
src/mesa/drivers/dri/i965/brw_wm_surface_state.c

index 02ccc1a..77198ae 100644 (file)
@@ -145,10 +145,11 @@ brw_emit_surface_state(struct brw_context *brw,
       if (mt->mcs_buf) {
          assert(mt->mcs_buf->offset == 0);
          aux_bo = mt->mcs_buf->bo;
-         aux_offset = mt->mcs_buf->bo->offset64;
+         aux_offset = mt->mcs_buf->bo->offset64 + mt->mcs_buf->offset;
       } else {
          aux_bo = mt->hiz_buf->aux_base.bo;
-         aux_offset = mt->hiz_buf->aux_base.bo->offset64;
+         aux_offset = mt->hiz_buf->aux_base.bo->offset64 +
+                      mt->hiz_buf->mt->offset;
       }
 
       /* We only really need a clear color if we also have an auxiliary