• Dave Gordon's avatar
    drm/i915: simplify allocation of driver-internal requests · 26827088
    Dave Gordon authored
    There are a number of places where the driver needs a request, but isn't
    working on behalf of any specific user or in a specific context. At
    present, we associate them with the per-engine default context. A future
    patch will abolish those per-engine context pointers; but we can already
    eliminate a lot of the references to them, just by making the allocator
    allow NULL as a shorthand for "an appropriate context for this ring",
    which will mean that the callers don't need to know anything about how
    the "appropriate context" is found (e.g. per-ring vs per-device, etc).
    
    So this patch renames the existing i915_gem_request_alloc(), and makes
    it local (static inline), and replaces it with a wrapper that provides
    a default if the context is NULL, and also has a nicer calling
    convention (doesn't require a pointer to an output parameter). Then we
    change all callers to use the new convention:
    OLD:
    	err = i915_gem_request_alloc(ring, user_ctx, &req);
    	if (err) ...
    NEW:
    	req = i915_gem_request_alloc(ring, user_ctx);
    	if (IS_ERR(req)) ...
    OLD:
    	err = i915_gem_request_alloc(ring, ring->default_context, &req);
    	if (err) ...
    NEW:
    	req = i915_gem_request_alloc(ring, NULL);
    	if (IS_ERR(req)) ...
    
    v4:	Rebased
    Signed-off-by: default avatarDave Gordon <david.s.gordon@intel.com>
    Reviewed-by: default avatarNick Hoath <nicholas.hoath@intel.com>
    Link: http://patchwork.freedesktop.org/patch/msgid/1453230175-19330-2-git-send-email-david.s.gordon@intel.comSigned-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    26827088
i915_drv.h 108 KB