|
@@ -97,6 +97,8 @@ static int drm_syncobj_fence_get_or_add_callback(struct drm_syncobj *syncobj,
|
|
{
|
|
{
|
|
int ret;
|
|
int ret;
|
|
|
|
|
|
|
|
+ WARN_ON(*fence);
|
|
|
|
+
|
|
*fence = drm_syncobj_fence_get(syncobj);
|
|
*fence = drm_syncobj_fence_get(syncobj);
|
|
if (*fence)
|
|
if (*fence)
|
|
return 1;
|
|
return 1;
|
|
@@ -743,6 +745,9 @@ static signed long drm_syncobj_array_wait_timeout(struct drm_syncobj **syncobjs,
|
|
|
|
|
|
if (flags & DRM_SYNCOBJ_WAIT_FLAGS_WAIT_FOR_SUBMIT) {
|
|
if (flags & DRM_SYNCOBJ_WAIT_FLAGS_WAIT_FOR_SUBMIT) {
|
|
for (i = 0; i < count; ++i) {
|
|
for (i = 0; i < count; ++i) {
|
|
|
|
+ if (entries[i].fence)
|
|
|
|
+ continue;
|
|
|
|
+
|
|
drm_syncobj_fence_get_or_add_callback(syncobjs[i],
|
|
drm_syncobj_fence_get_or_add_callback(syncobjs[i],
|
|
&entries[i].fence,
|
|
&entries[i].fence,
|
|
&entries[i].syncobj_cb,
|
|
&entries[i].syncobj_cb,
|