[Intel-gfx] [PATCH 18/31] drm/i915: Simplify request_alloc by returning the allocated request

Dave Gordon david.s.gordon at intel.com
Thu Jul 28 12:48:32 UTC 2016


On 27/07/16 16:28, Chris Wilson wrote:
> On Wed, Jul 27, 2016 at 12:08:35PM +0100, Dave Gordon wrote:
>> On 25/07/16 10:18, Joonas Lahtinen wrote:
>>> On ma, 2016-07-25 at 08:44 +0100, Chris Wilson wrote:
>>>> If is simpler and leads to more readable code through the callstack if
>>>> the allocation returns the allocated struct through the return value.
>>>>
>>>> The importance of this is that it no longer looks like we accidentally
>>>> allocate requests as side-effect of calling .
>>>
>>> Dave seems to have expressed to wish to review this around January, so
>>> CC'ing him here.
>>>
>> >From me,
>>>
>>> Reviewed-by: Joonas Lahtinen <joonas.lahtinen at linux.intel.com>
>>>
>>>> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
>>>> ---
>>>> drivers/gpu/drm/i915/i915_drv.h            |  3 +-
>>>> drivers/gpu/drm/i915/i915_gem.c            | 75 ++++++++----------------------
>>>> drivers/gpu/drm/i915/i915_gem_execbuffer.c | 12 ++---
>>>> drivers/gpu/drm/i915/i915_gem_request.c    | 58 ++++++++---------------
>>>> drivers/gpu/drm/i915/i915_trace.h          | 13 +++---
>>>> drivers/gpu/drm/i915/intel_display.c       | 36 ++++++--------
>>>> drivers/gpu/drm/i915/intel_lrc.c           |  2 +-
>>>> drivers/gpu/drm/i915/intel_overlay.c       | 20 ++++----
>>>> 8 files changed, 79 insertions(+), 140 deletions(-)
>>
>> The actual code looks fine, but the patch amalgamates several
>> different changes, only one  of which is mentioned in the
>> description above.
>>
>> 1. Change the signature of i915_gem_object_sync() and its internal
>>    subfunction __i915_gem_object_sync() to always require a request
>>    as input, with corresponding rework of the callsites. This enables
>>    the removal of the internal call to i915_gem_request_alloc().
>>
>> 2. Change API of i915_gem_request_alloc() not to allow NULL ctx,
>>    which involves changing various of the remaining callsites.
>
> Reverts the unwanted the change.

No, 2 and 3 together do NOT revert the change 268270883 because that's 
what originally changed the API of i915_gem_request_alloc() to return a 
pointer directly, rather than via an output parameter. Which everyone 
agrees is a good idea :)

Allowing NULL here was a useful step in the elimination of the per-ring 
default context (which was after all your idea, IIRC). Now that there 
aren't so many callsites it's not so ugly to have those callers mention 
the (now-unified) kernel context.

>> 3. Flatten __i915_gem_request_alloc() into i915_gem_request_alloc().
>>
>> The description really only covers (3), which is the simplest and
>> most mechanical of the changes. So preferably two or three separate
>> patches, in whatever order makes the most sense, with a bit more
>> description of each.
>
> It mentions 1 explicitly which was the reason why the API was originally
> intended to be this.
> -Chris

Strange, I can't see any *explicit* mention of i915_gem_object_sync(), 
only some vague allusion to "certain functions".

.Dave.


More information about the Intel-gfx mailing list