forked from luck/tmp_suning_uos_patched
drm/omap: gem sync: wait on correct events
A waiter of the type OMAP_GEM_READ should wait for a buffer to be completely written, and only then proceed with reading it. A similar logic applies for waiters with OMAP_GEM_WRITE flag. Currently the function is_waiting() waits on the read_complete/read_target counts in the sync object. This should be the other way round, as a reader should wait for users who are 'writing' to this buffer, and vice versa. Make readers of the buffer(OMAP_GEM_READ) wait on the write counters, and writers to the buffer(OMAP_GEM_WRITE) wait on the read counters in is_waiting() Signed-off-by: Archit Taneja <archit@ti.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
This commit is contained in:
parent
15ec2ca964
commit
f2cff0f34f
|
@ -1047,10 +1047,10 @@ static inline bool is_waiting(struct omap_gem_sync_waiter *waiter)
|
|||
{
|
||||
struct omap_gem_object *omap_obj = waiter->omap_obj;
|
||||
if ((waiter->op & OMAP_GEM_READ) &&
|
||||
(omap_obj->sync->read_complete < waiter->read_target))
|
||||
(omap_obj->sync->write_complete < waiter->write_target))
|
||||
return true;
|
||||
if ((waiter->op & OMAP_GEM_WRITE) &&
|
||||
(omap_obj->sync->write_complete < waiter->write_target))
|
||||
(omap_obj->sync->read_complete < waiter->read_target))
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user