On Thursday, December 1, 2016 2:09:55 PM PST Ben Widawsky wrote: > From: Ben Widawsky <b...@bwidawsk.net> > > Previously our aux buffers (MCS, and HiZ) never had an offset because > they were in their own buffer object. When using the CCS lossless > compression feature, it's desirable to store the data at an offset from > the main framebuffer, ie. share a buffer object. This patch just makes > having an aux offset possible. > > Thanks to Ken for helping me find the most simple fix... > > Cc: Kenneth Graunke <kenn...@whitecape.org> > Signed-off-by: Ben Widawsky <b...@bwidawsk.net> > --- > src/mesa/drivers/dri/i965/brw_wm_surface_state.c | 3 +-- > src/mesa/drivers/dri/i965/intel_image.h | 3 +++ > src/mesa/drivers/dri/i965/intel_screen.c | 5 +++++ > 3 files changed, 9 insertions(+), 2 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 6c44381..69be3eb 100644 > --- a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c > +++ b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c > @@ -143,7 +143,6 @@ brw_emit_surface_state(struct brw_context *brw, > aux_surf = &aux_surf_s; > > if (mt->mcs_buf) { > - assert(mt->mcs_buf->offset == 0); > aux_bo = mt->mcs_buf->bo; > aux_offset = mt->mcs_buf->bo->offset64 + mt->mcs_buf->offset; > } else { > @@ -185,7 +184,7 @@ brw_emit_surface_state(struct brw_context *brw, > uint32_t *aux_addr = state + brw->isl_dev.ss.aux_addr_offset; > drm_intel_bo_emit_reloc(brw->batch.bo, > *surf_offset + brw->isl_dev.ss.aux_addr_offset, > - aux_bo, *aux_addr & 0xfff, > + aux_bo, *aux_addr - aux_bo->offset64, > read_domains, write_domains); > } > }
This seems like two separate patches - one above (fixing SURFACE_STATE to actually handle non-zero aux offsets), and one below (adding offset fields for DRI images). Could we split it? The one above would get a: Reviewed-by: Kenneth Graunke <kenn...@whitecape.org> I'd need to read the one below in more context. > diff --git a/src/mesa/drivers/dri/i965/intel_image.h > b/src/mesa/drivers/dri/i965/intel_image.h > index bbda952..7b3c624 100644 > --- a/src/mesa/drivers/dri/i965/intel_image.h > +++ b/src/mesa/drivers/dri/i965/intel_image.h > @@ -92,6 +92,9 @@ struct __DRIimageRec { > /** The image was created with EGL_EXT_image_dma_buf_import. */ > bool dma_buf_imported; > > + /** The image has some ancillary data associated with it at offset. */ > + uint32_t aux_offset; > + > /** > * Provided by EGL_EXT_image_dma_buf_import. > * \{ > diff --git a/src/mesa/drivers/dri/i965/intel_screen.c > b/src/mesa/drivers/dri/i965/intel_screen.c > index e0402cf..0f19a6e 100644 > --- a/src/mesa/drivers/dri/i965/intel_screen.c > +++ b/src/mesa/drivers/dri/i965/intel_screen.c > @@ -572,6 +572,11 @@ create_image_with_modifier(struct intel_screen *screen, > image->tile_y = I915_TILING_Y; > image->modifier = modifier; > > + if (image->planar_format) > + assert(image->planar_format->nplanes == 1); > + > + image->aux_offset = 0; /* y_tiled_height * pitch; */ > + > return true; > } > >
signature.asc
Description: This is a digitally signed message part.
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev