mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-02-23 07:30:30 +01:00
dri1: Add a macro to validate two dri drawables in one go.
Dri drivers often may validate first a write drawable and then a read
drawable ("readable"). However, the hardware lock may be unlocked when
validating the readable, causing the write drawable status to be stale.
Drivers should use this macro instead when validating two drawables.
This commit is contained in:
parent
a5b5bc9f95
commit
11351f0c8a
1 changed files with 22 additions and 0 deletions
|
|
@ -108,6 +108,28 @@ do { \
|
|||
} \
|
||||
} while (0)
|
||||
|
||||
/**
|
||||
* Same as above, but for two drawables simultaneously.
|
||||
*
|
||||
*/
|
||||
|
||||
#define DRI_VALIDATE_TWO_DRAWABLES_INFO(psp, pdp, prp) \
|
||||
do { \
|
||||
while (*((pdp)->pStamp) != (pdp)->lastStamp || \
|
||||
*((prp)->pStamp) != (prp)->lastStamp) { \
|
||||
register unsigned int hwContext = (psp)->pSAREA->lock.lock & \
|
||||
~(DRM_LOCK_HELD | DRM_LOCK_CONT); \
|
||||
DRM_UNLOCK((psp)->fd, &(psp)->pSAREA->lock, hwContext); \
|
||||
\
|
||||
DRM_SPINLOCK(&(psp)->pSAREA->drawable_lock, (psp)->drawLockID); \
|
||||
DRI_VALIDATE_DRAWABLE_INFO_ONCE(pdp); \
|
||||
DRI_VALIDATE_DRAWABLE_INFO_ONCE(prp); \
|
||||
DRM_SPINUNLOCK(&(psp)->pSAREA->drawable_lock, (psp)->drawLockID); \
|
||||
\
|
||||
DRM_LIGHT_LOCK((psp)->fd, &(psp)->pSAREA->lock, hwContext); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
|
||||
/**
|
||||
* Driver callback functions.
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue