• Ben Widawsky's avatar
    drm/i915: context switch implementation · e0556841
    Ben Widawsky authored
    Implement the context switch code as well as the interfaces to do the
    context switch. This patch also doesn't match 1:1 with the RFC patches.
    The main difference is that from Daniel's responses the last context
    object is now stored instead of the last context. This aids in allows us
    to free the context data structure, and context object independently.
    There is room for optimization: this code will pin the context object
    until the next context is active. The optimal way to do it is to
    actually pin the object, move it to the active list, do the context
    switch, and then unpin it. This allows the eviction code to actually
    evict the context object if needed.
    The context switch code is missing workarounds, they will be implemented
    in future patches.
    v2: actually do obj->dirty=1 in switch (daniel)
    Modified comment around above
    Remove flags to context switch (daniel)
    Move mi_set_context code to i915_gem_context.c (daniel)
    Remove seqno , use lazy request instead (daniel)
    v3: use i915_gem_request_next_seqno instead of
          outstanding_lazy_request (Daniel)
    remove id's from trace events (Daniel)
    Put the context BO in the instruction domain (Daniel)
    Don't unref the BO is context switch fails (Chris)
    Signed-off-by: default avatarBen Widawsky <ben@bwidawsk.net>
i915_gem_context.c 14.1 KB