Hi Yogesh: http://oorja.iind.intel.com/mediawiki/index.php/Flatland can you also try the flatland on this page.
For AOSP flatland, yes, the EGL patch may solve the issue. However, I met one case that the batch buffer is empty just at the swapbuffer (glfush is just called before that), then you might not get a fence fd. So I had to record the last fence fd. I am not sure, you had better try it on the board If you can get a valid fd on any situation. -----Original Message----- From: Marathe, Yogesh Sent: Monday, August 7, 2017 13:25 To: Tomasz Figa <[email protected]>; Wu, Zhongmin <[email protected]> Cc: Gao, Shuo <[email protected]>; Antognolli, Rafael <[email protected]>; Emil Velikov <[email protected]>; Kenneth Graunke <[email protected]>; ML mesa-dev <[email protected]>; Kondapally, Kalyan <[email protected]>; Timothy Arceri <[email protected]> Subject: RE: [Mesa-dev] [EGL android: accquire fence implementation 1/2] i965: Return the last fence if the batch buffer is empty and nothing to be flushed when _intel_batchbuffer_flush_fence. This can be dropped. I'm running with egl patch alone and things seem fine. Zhongmin, please comment if you don’t think so. > -----Original Message----- > From: mesa-dev [mailto:[email protected]] On > Behalf Of Marathe, Yogesh > Sent: Friday, August 4, 2017 9:18 PM > > Tomasz, > > > -----Original Message----- > > From: Tomasz Figa [mailto:[email protected]] > > Sent: Friday, August 4, 2017 3:48 PM > > To: Marathe, Yogesh <[email protected]> > > Cc: Emil Velikov <[email protected]>; Wu, Zhongmin > > <[email protected]>; Gao, Shuo <[email protected]>; Antognolli, > > Rafael <[email protected]>; Timothy Arceri > > <[email protected]>; Kenneth Graunke <[email protected]>; > > Kondapally, Kalyan <[email protected]>; ML mesa-dev <mesa- > > [email protected]> > > Subject: Re: [Mesa-dev] [EGL android: accquire fence implementation > > 1/2] > i965: > > Return the last fence if the batch buffer is empty and nothing to be > > flushed when _intel_batchbuffer_flush_fence. > > > > Hi Yogesh, > > > > On Fri, Aug 4, 2017 at 7:12 PM, Marathe, Yogesh > > <[email protected]> > > wrote: > > > Hi Emil, > > > > > >> -----Original Message----- > > >> From: mesa-dev [mailto:[email protected]] On > > >> Behalf Of Emil Velikov > > >> Sent: Tuesday, July 25, 2017 8:19 PM > > >> To: Wu, Zhongmin <[email protected]> > > >> Cc: Gao, Shuo <[email protected]>; Antognolli, Rafael > > >> <[email protected]>; Timothy Arceri > > >> <[email protected]>; Marathe, Yogesh > > >> <[email protected]>; Tomasz Figa <[email protected]>; > > >> Kenneth Graunke <[email protected]>; Kondapally, Kalyan > > >> <[email protected]>; ML mesa-dev <mesa- > > >> [email protected]> > > >> Subject: Re: [Mesa-dev] [EGL android: accquire fence > > >> implementation 1/2] > > i965: > > >> Return the last fence if the batch buffer is empty and nothing to > > >> be flushed when _intel_batchbuffer_flush_fence. > > >> > > >> Hi Zhongmin, > > >> > > >> Is the issue resolved by the EGL patch alone? Worth sticking with > > >> that for > > now? > > >> > > >> I think this patch will cause some noticeable overhead - see > > >> below for > details. > > >> > > >> > > >> On 21 July 2017 at 04:08, Zhongmin Wu <[email protected]> wrote: > > >> > Always save the last fence in the brw context when flushing buffer. > > >> > If the buffer is nothing to be flushed, then return the last > > >> > fence when asked for. > > >> > > > >> > Change-Id: Ic47035bcd1a27e402609afd9e2d1e3972548b97d > > >> > Signed-off-by: Zhongmin Wu <[email protected]> > > >> > --- > > >> > src/mesa/drivers/dri/i965/brw_context.c | 5 +++++ > > >> > src/mesa/drivers/dri/i965/brw_context.h | 1 + > > >> > src/mesa/drivers/dri/i965/intel_batchbuffer.c | 16 ++++++++++++++-- > > >> > 3 files changed, 20 insertions(+), 2 deletions(-) > > >> > > > >> > diff --git a/src/mesa/drivers/dri/i965/brw_context.c > > >> > b/src/mesa/drivers/dri/i965/brw_context.c > > >> > index 5433f90..ed0b056 100644 > > >> > --- a/src/mesa/drivers/dri/i965/brw_context.c > > >> > +++ b/src/mesa/drivers/dri/i965/brw_context.c > > >> > @@ -1086,6 +1086,8 @@ brwCreateContext(gl_api api, > > >> > ctx->VertexProgram._MaintainTnlProgram = true; > > >> > ctx->FragmentProgram._MaintainTexEnvProgram = true; > > >> > > > >> > + brw->out_fence_fd = -1; > > >> > + > > >> > brw_draw_init( brw ); > > >> > > > >> > if ((flags & __DRI_CTX_FLAG_DEBUG) != 0) { @@ -1169,6 > > >> > +1171,9 @@ intelDestroyContext(__DRIcontext * driContextPriv) > > >> > brw->throttle_batch[1] = NULL; > > >> > brw->throttle_batch[0] = NULL; > > >> > > > >> > + if (brw->out_fence_fd >= 0) > > >> > + close(brw->out_fence_fd); > > >> > + > > >> > driDestroyOptionCache(&brw->optionCache); > > >> > > > >> > /* free the Mesa context */ diff --git > > >> > a/src/mesa/drivers/dri/i965/brw_context.h > > >> > b/src/mesa/drivers/dri/i965/brw_context.h > > >> > index dc4bc8f..692ea2c 100644 > > >> > --- a/src/mesa/drivers/dri/i965/brw_context.h > > >> > +++ b/src/mesa/drivers/dri/i965/brw_context.h > > >> > @@ -1217,6 +1217,7 @@ struct brw_context > > >> > > > >> > __DRIcontext *driContext; > > >> > struct intel_screen *screen; > > >> > + int out_fence_fd; > > >> > }; > > >> > > > >> > /* brw_clear.c */ > > >> > diff --git a/src/mesa/drivers/dri/i965/intel_batchbuffer.c > > >> > b/src/mesa/drivers/dri/i965/intel_batchbuffer.c > > >> > index 62d2fe8..d342e5d 100644 > > >> > --- a/src/mesa/drivers/dri/i965/intel_batchbuffer.c > > >> > +++ b/src/mesa/drivers/dri/i965/intel_batchbuffer.c > > >> > @@ -648,9 +648,18 @@ do_flush_locked(struct brw_context *brw, > > >> > int > > >> in_fence_fd, int *out_fence_fd) > > >> > /* Add the batch itself to the end of the validation list */ > > >> > add_exec_bo(batch, batch->bo); > > >> > > > >> > + if (brw->out_fence_fd >= 0) { > > >> > + close(brw->out_fence_fd); > > >> > + brw->out_fence_fd = -1; > > >> > + } > > >> > + > > >> > + int fd = -1; > > >> > ret = execbuffer(dri_screen->fd, batch, hw_ctx, > > >> > 4 * USED_BATCH(*batch), > > >> > - in_fence_fd, out_fence_fd, flags); > > >> > + in_fence_fd, &fd, flags); > > >> execbuffer() creates an out fence if the "out_fence_fd" pointer > > >> is non- > NULL. > > >> Hence with this patch we'will create a fence for each > > >> _intel_batchbuffer_flush_fence() invocation... > > >> > > >> Not sure how costly that will be though :-\ > > >> > > > > > > I see this results into 1 get_unused_fd_flags() + 1 > > > sync_file_create() and operations to store out fd in kernel for > > > return arg. I doubt it will be very costly, the ioctl > > > DRM_IOCTL_I915_GEM_EXECBUFFER2 or > > DRM_IOCTL_I915_GEM_EXECBUFFER2_WR > > > was anyways there, so nothing huge additional on ioctl front. > > > > > > Nonetheless, what other option do we have? This may sound absurd > > > but is there a way / ioctl to call sync_file_create directly from > > > mesa UMD and store fds instead of creating at every execbuffer()? > > > We also need a way to associate those stored fds to buffers then. > > > I know I'm adding more ioctls but intension is, if we can do this > > > in some > > > init() we'll save these operations during execbuffer(). > > > > > > IMHO, this is separate discussion, let this patch enable > > > functionality first and then we can work on making it light. > > > > The question was whether the EGL patch alone solves the Flatland > > issue. We need it answered first before we continue with further discussion. > > Sorry, I assumed it won't, I tested flatland again with egl patch > alone and it worked! > Will check overall stability of system and confirm if we can drop this > by Monday (shouldn’t break anything else). > > > > > Best regards, > > Tomasz > _______________________________________________ > mesa-dev mailing list > [email protected] > https://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-dev
