<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
On 07/10/2016 10:46, Chris Wilson wrote:<br>
<blockquote
cite="mid:20161007094635.28319-15-chris@chris-wilson.co.uk"
type="cite">
<pre wrap="">A while ago we switched from a contiguous array of pages into an sglist,
for that was both more convenient for mapping to hardware and avoided
the requirement for a vmalloc array of pages on every object. However,
certain GEM API calls (like pwrite, pread as well as performing
relocations) do desire access to individual struct pages. A quick hack
was to introduce a cache of the last access such that finding the
following page was quick - this works so long as the caller desired
sequential access. Walking backwards, or multiple callers, still hits a
slow linear search for each page. One solution is to store each
successful lookup in a radix tree.
Signed-off-by: Chris Wilson <a class="moz-txt-link-rfc2396E" href="mailto:chris@chris-wilson.co.uk"><chris@chris-wilson.co.uk></a>
---
drivers/gpu/drm/i915/i915_drv.h | 57 ++++--------
drivers/gpu/drm/i915/i915_gem.c | 149 ++++++++++++++++++++++++++++----
drivers/gpu/drm/i915/i915_gem_stolen.c | 4 +-
drivers/gpu/drm/i915/i915_gem_userptr.c | 4 +-
4 files changed, 154 insertions(+), 60 deletions(-)</pre>
</blockquote>
<br>
Am curious to know if you have any performance data to show how much
of a benefit this is? Are there any real world apps that would
notice or just IGT benchmarks?<br>
<br>
Reviewed-by: John Harrison <a class="moz-txt-link-rfc2396E"
href="mailto:john.c.harrison@intel.com"><john.c.harrison@intel.com></a><br>
<br>
</body>
</html>