RE: [PATCH 5/6] drm/amdgpu: add timeline support in amdgpu CS

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




> -----Original Message-----
> From: Nicolai Hähnle <nhaehnle@xxxxxxxxx>
> Sent: Wednesday, September 26, 2018 5:06 PM
> To: Zhou, David(ChunMing) <David1.Zhou@xxxxxxx>; dri-
> devel@xxxxxxxxxxxxxxxxxxxxx
> Cc: amd-gfx@xxxxxxxxxxxxxxxxxxxxx
> Subject: Re: [PATCH 5/6] drm/amdgpu: add timeline support in amdgpu CS
> 
> Hey Chunming,
> 
> On 20.09.2018 13:03, Chunming Zhou wrote:
> > @@ -1113,48 +1117,91 @@ static int
> amdgpu_syncobj_lookup_and_add_to_sync(struct amdgpu_cs_parser *p,
> >   }
> >
> >   static int amdgpu_cs_process_syncobj_in_dep(struct amdgpu_cs_parser
> *p,
> > -					    struct amdgpu_cs_chunk *chunk)
> > +					    struct amdgpu_cs_chunk *chunk,
> > +					    bool timeline)
> >   {
> >   	unsigned num_deps;
> >   	int i, r;
> > -	struct drm_amdgpu_cs_chunk_sem *deps;
> >
> > -	deps = (struct drm_amdgpu_cs_chunk_sem *)chunk->kdata;
> > -	num_deps = chunk->length_dw * 4 /
> > -		sizeof(struct drm_amdgpu_cs_chunk_sem);
> > +	if (!timeline) {
> > +		struct drm_amdgpu_cs_chunk_sem *deps;
> >
> > -	for (i = 0; i < num_deps; ++i) {
> > -		r = amdgpu_syncobj_lookup_and_add_to_sync(p,
> deps[i].handle);
> > +		deps = (struct drm_amdgpu_cs_chunk_sem *)chunk->kdata;
> > +		num_deps = chunk->length_dw * 4 /
> > +			sizeof(struct drm_amdgpu_cs_chunk_sem);
> > +		for (i = 0; i < num_deps; ++i) {
> > +			r = amdgpu_syncobj_lookup_and_add_to_sync(p,
> deps[i].handle,
> > +								  0, 0);
> >   		if (r)
> >   			return r;
> 
> The indentation looks wrong.
> 
> 
> > +		}
> > +	} else {
> > +		struct drm_amdgpu_cs_chunk_syncobj *syncobj_deps;
> > +
> > +		syncobj_deps = (struct drm_amdgpu_cs_chunk_syncobj
> *)chunk->kdata;
> > +		num_deps = chunk->length_dw * 4 /
> > +			sizeof(struct drm_amdgpu_cs_chunk_syncobj);
> > +		for (i = 0; i < num_deps; ++i) {
> > +			r = amdgpu_syncobj_lookup_and_add_to_sync(p,
> syncobj_deps[i].handle,
> > +
> syncobj_deps[i].point,
> > +
> syncobj_deps[i].flags);
> > +		if (r)
> > +			return r;
> 
> Here as well.
> 
> So I'm wondering a bit about this uapi. Specifically, what happens if you try to
> use timeline syncobjs here as dependencies _without_
> DRM_SYNCOBJ_WAIT_FLAGS_WAIT_FOR_SUBMIT?
> 
> My understanding is, it'll just return -EINVAL without any indication as to
> which syncobj actually failed. What's the caller supposed to do then?

How about adding a print to indicate which syncobj failed?

Thanks,
David Zhou
> 
> Cheers,
> Nicolai
> --
> Lerne, wie die Welt wirklich ist,
> Aber vergiss niemals, wie sie sein sollte.
_______________________________________________
dri-devel mailing list
dri-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/dri-devel




[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux