mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 09:28:07 +02:00
gbm/dri: Flush after unmap
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 <thellstrom@vmware.com> Reviewed-by: Eric Anholt <eric@anholt.net> (cherry picked from commitba8df2286a) Squashed with commit gbm/dri: Check dri extension version before flush after unmap The commit mentioned below required the __DRI2FlushExtension to have version 4 or above, for GBM functionality. That broke GBM with some classic dri drivers. Relax that requirement so that we only flush after unmap if we have version 4 or above. Drivers that require the flush for correct functionality should implement the desired version. Fixes:ba8df228("gbm/dri: Flush after unmap") Cc: <mesa-stable@lists.freedesktop.org> Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com> Reviewed-by: Emil Velikov <emil.velikov@collabora.com> Tested-by: Dylan Baker <dylan@pnwbakers.com> (cherry picked from commit18e2aa063c)
This commit is contained in:
parent
5094311078
commit
79d97bcf66
1 changed files with 8 additions and 0 deletions
|
|
@ -987,6 +987,14 @@ 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.
|
||||
*/
|
||||
if (dri->flush->base.version >= 4)
|
||||
dri->flush->flush_with_flags(dri->context, NULL, __DRI2_FLUSH_CONTEXT, 0);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue