On 7/19/2018 2:35 AM, Tvrtko Ursulin wrote: > From: Tvrtko Ursulin > > Request split mode had several bugs, both in the original version and also > after the recent refactorings. > > One big one was that it wasn't considering different submit ports as a > reason to split execution, and also that it was too time based instead of > looking at relevant timelines. > > In this refactoring we address the former by using the engine timelines > introduced in the previous patch. Secondary port submissions are moved > to follow the preceding submission as a first step in the correction > process. > > In the second step, we add context timelines and use then in a similar > fashion to separate start and end time of coalesced requests. For each > coalesced request we know its boundaries by looking at the engine > timeline (via global seqnos), and we know the previous request it should > only start after, by looking at the context timeline. > > v2: > * Remove some dead code. > * Fix !port0 shifting logic. > > v3: > * Refactor for less list walking as with incomplete handling. > > v4: > * Database of context timelines should not contain duplicates! > (Converted from array into a hash.) > > v5: > * Avoid over-accounting runnable time for a coalesced group by recording > the time first request entered the GPU and ending the execute delay at > that point for the whole group. > > v6: > * Update for engine class:instance. > > Signed-off-by: Tvrtko Ursulin > Cc: John Harrison > --- > scripts/trace.pl | 138 ++++++++++++++++++++++++++++++++++++----------- > 1 file changed, 108 insertions(+), 30 deletions(-) > > Reviewed-by: John Harrison