Reviewed-by: Marek Olšák <[email protected]> Marek
On Tue, Mar 28, 2017 at 9:39 PM, Thomas Hellstrom <[email protected]> wrote: > Drivers may queue dma operations on the context at unmap time so we need > to flush to make sure the data gets to the bo. Ideally the application > would take care of this, but since there appears to be no exported gbm > flush functionality we need to explicitly flush at unmap time. > > This fixes a problem where kmscube on vmwgfx in rgba textured mode would > render using an uninitialized texture rather than the intended > rgba pattern. > > Signed-off-by: Thomas Hellstrom <[email protected]> > --- > src/gbm/backends/dri/gbm_dri.c | 9 ++++++++- > 1 file changed, 8 insertions(+), 1 deletion(-) > > diff --git a/src/gbm/backends/dri/gbm_dri.c b/src/gbm/backends/dri/gbm_dri.c > index ac7ede8..6c2244c 100644 > --- a/src/gbm/backends/dri/gbm_dri.c > +++ b/src/gbm/backends/dri/gbm_dri.c > @@ -243,7 +243,7 @@ struct dri_extension_match { > }; > > static struct dri_extension_match dri_core_extensions[] = { > - { __DRI2_FLUSH, 1, offsetof(struct gbm_dri_device, flush) }, > + { __DRI2_FLUSH, 4, offsetof(struct gbm_dri_device, flush) }, > { __DRI_IMAGE, 1, offsetof(struct gbm_dri_device, image) }, > { __DRI2_FENCE, 1, offsetof(struct gbm_dri_device, fence), 1 }, > { __DRI2_INTEROP, 1, offsetof(struct gbm_dri_device, interop), 1 }, > @@ -992,6 +992,13 @@ gbm_dri_bo_unmap(struct gbm_bo *_bo, void *map_data) > return; > > dri->image->unmapImage(dri->context, bo->image, map_data); > + > + /* > + * Not all DRI drivers use direct maps. They may queue up DMA operations > + * on the mapping context. Since there is no explicit gbm flush > + * mechanism. We need to flush here. > + */ > + dri->flush->flush_with_flags(dri->context, NULL, __DRI2_FLUSH_CONTEXT, 0); > } > > > -- > 2.5.0 > > _______________________________________________ > mesa-dev mailing list > [email protected] > https://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-dev
