Ah yes you are right, my mistake. I will update the patch after some more testing. Thx.
On 8 November 2017 at 17:21, Chris Wilson <ch...@chris-wilson.co.uk> wrote: > Quoting Julien Isorce (2017-11-08 16:55:05) > > v2: add early return if (flag & MAP_INTERNAL_MASK) > > > > Already implemented for Gallium drivers. > > > > Useful for gbm_bo_(un)map. > > > > Tested by porting wayland/weston/clients/simple-dmabuf-drm.c to GBM. > > > > Signed-off-by: Julien Isorce <jiso...@oblong.com> > > --- > > src/mesa/drivers/dri/i965/intel_screen.c | 51 > ++++++++++++++++++++++++++++++-- > > 1 file changed, 49 insertions(+), 2 deletions(-) > > > > diff --git a/src/mesa/drivers/dri/i965/intel_screen.c > b/src/mesa/drivers/dri/i965/intel_screen.c > > index cdc36ad..b7b0e25 100644 > > --- a/src/mesa/drivers/dri/i965/intel_screen.c > > +++ b/src/mesa/drivers/dri/i965/intel_screen.c > > @@ -755,6 +755,53 @@ intel_create_image(__DRIscreen *dri_screen, > > loaderPrivate); > > } > > > > +static void * > > +intel_map_image(__DRIcontext *context, __DRIimage *image, > > + int x0, int y0, int width, int height, > > + unsigned int flags, int *stride, void **map_info) > > +{ > > + struct brw_context *brw = NULL; > > + struct brw_bo *bo = NULL; > > + void *raw_data = NULL; > > + > > + if (!context || !image || !stride || !map_info || *map_info) > > + return NULL; > > + > > + if (flags & MAP_INTERNAL_MASK) > > + return NULL; > > + > > + brw = context->driverPrivate; > > + bo = image->bo; > > + > > + assert(brw); > > + assert(bo); > > + > > + /* DRI flags and GL_MAP.*_BIT flags are the same, so just pass them > on. */ > > + raw_data = brw_bo_map(brw, bo, flags); > > + > > + if (raw_data) { > > + *map_info = raw_data; > > + *stride = image->pitch; > > + } > > + > > + return raw_data; > > Did you not say the returned address is to pixel0 of the (x,y)x(w,h) rect > within the image? So raw_data + y0*image->pitch + x0*image->cpp? > Or something more like raw_data + > y0/util_format_get_blockheight(image->format) > * image->pitch + > x0/util_format_get_blockwidth(image->format) * util_format_get_blocksize( > image->format); > -Chris > >
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev