On 2018年11月15日 19:12, Christian König wrote:
Implement finding the right timeline point in drm_syncobj_find_fence.

Signed-off-by: Christian König <christian.koe...@amd.com>
---
  drivers/gpu/drm/drm_syncobj.c | 10 +++++++++-
  1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/drm_syncobj.c b/drivers/gpu/drm/drm_syncobj.c
index 589d884ccd58..d42c51520da4 100644
--- a/drivers/gpu/drm/drm_syncobj.c
+++ b/drivers/gpu/drm/drm_syncobj.c
@@ -307,9 +307,17 @@ int drm_syncobj_find_fence(struct drm_file *file_private,
                return -ENOENT;
*fence = drm_syncobj_fence_get(syncobj);
-       if (!*fence) {
+       if (!*fence)
                ret = -EINVAL;
+
+       if (!ret && point) {
+               dma_fence_chain_for_each(*fence) {
+                       if (!to_dma_fence_chain(*fence) ||
+                           (*fence)->seqno <= point)
+                               break;
This condition isn't enough to find proper point.
For two examples:
a. No garbage collection happens, the points in chain are 1----3----6----9----12---18---20, if user wants to get point17, then we should return node 18. b. garbage collection happens on point6, chain would be updated to 1---3---9---12---18---20, if user wants to get point5, then we should return node 3, but if user wants to get point 7, then we should return node 9.

I still have no idea how to satisfy all these requirements with your current chain-fence. All these logic just are same we encountered before, we're walking them again. After solving these problems, I guess all design is similar as before.

In fact, I don't know what problem previous design has, maybe there are some bugs, can't we fix these bugs by time going? Who can make sure his implementation never have bugs?


-David
+               }
        }
+
        drm_syncobj_put(syncobj);
        return ret;
  }

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to