Hi, sorry if I misunderstood everything... In the file src/gallium/drivers/nouveau/nv30/nv30_screen.c there is loans of PUSH_DATA which is basically *push->curr = data; I'm thinking that somehow push->curr is the bo->map = drm_mmap(...) that is called in nouveau_bo_map. But I cannot see how they are linked... Because when nouveau_bo_map calls nouveau_bo_wait push = cli_push_get(client, bo) returns NULL... Is push->curr the region of memory that we send data to the card? If so, how is it mapped? Has bo->map something to do with it? If so, how are they linked? -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.freedesktop.org/archives/nouveau/attachments/20151102/c91c634d/attachment.html>
See libdrm's pushbuf.c -- iirc push->cur points to a GART-mapped bo. http://cgit.freedesktop.org/mesa/drm/tree/nouveau/pushbuf.c#n682 nouveau_pushbuf_data(push, NULL, 0, 0); nouveau_bo_ref(bo, &nvpb->bo); nouveau_bo_ref(NULL, &bo); nvpb->bgn = nvpb->bo->map; nvpb->ptr = nvpb->bgn; push->cur = nvpb->bgn; push->end = push->cur + (nvpb->bo->size / 4); push->end -= 2 + push->rsvd_kick; /* space for suffix */ Not sure what problem you're trying to solve. -ilia On Mon, Nov 2, 2015 at 12:31 PM, Daniel Melo Jorge da Cunha <dmjcunha at gmail.com> wrote:> Hi, sorry if I misunderstood everything... > > In the file src/gallium/drivers/nouveau/nv30/nv30_screen.c there is loans of > PUSH_DATA which is basically *push->curr = data; > > I'm thinking that somehow push->curr is the bo->map = drm_mmap(...) > that is called in nouveau_bo_map. But I cannot see how they are linked... > Because when nouveau_bo_map calls nouveau_bo_wait > push = cli_push_get(client, bo) returns NULL... > > Is push->curr the region of memory that we send data to the card? > If so, how is it mapped? > Has bo->map something to do with it? If so, how are they linked? > > _______________________________________________ > Nouveau mailing list > Nouveau at lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/nouveau >
But at the time the mesa3d file src/gallium/drivers/nouveau/nv30/nv30_screen.c is called and when the various PUSH_DATA begin to be called there is not yet a call to nouveau_pushbuf_space. So it would generate a seg fault in push->curr. Again, sorry for the confusion and thanks for the reply. Awaiting for an answer if possible. Thanks in advance. 2015-11-02 14:44 GMT-03:00 Ilia Mirkin <imirkin at alum.mit.edu>:> See libdrm's pushbuf.c -- iirc push->cur points to a GART-mapped bo. > > http://cgit.freedesktop.org/mesa/drm/tree/nouveau/pushbuf.c#n682 > > nouveau_pushbuf_data(push, NULL, 0, 0); > nouveau_bo_ref(bo, &nvpb->bo); > nouveau_bo_ref(NULL, &bo); > > nvpb->bgn = nvpb->bo->map; > nvpb->ptr = nvpb->bgn; > push->cur = nvpb->bgn; > push->end = push->cur + (nvpb->bo->size / 4); > push->end -= 2 + push->rsvd_kick; /* space for suffix */ > > Not sure what problem you're trying to solve. > > -ilia > > On Mon, Nov 2, 2015 at 12:31 PM, Daniel Melo Jorge da Cunha > <dmjcunha at gmail.com> wrote: > > Hi, sorry if I misunderstood everything... > > > > In the file src/gallium/drivers/nouveau/nv30/nv30_screen.c there is > loans of > > PUSH_DATA which is basically *push->curr = data; > > > > I'm thinking that somehow push->curr is the bo->map = drm_mmap(...) > > that is called in nouveau_bo_map. But I cannot see how they are linked... > > Because when nouveau_bo_map calls nouveau_bo_wait > > push = cli_push_get(client, bo) returns NULL... > > > > Is push->curr the region of memory that we send data to the card? > > If so, how is it mapped? > > Has bo->map something to do with it? If so, how are they linked? > > > > _______________________________________________ > > Nouveau mailing list > > Nouveau at lists.freedesktop.org > > http://lists.freedesktop.org/mailman/listinfo/nouveau > > >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.freedesktop.org/archives/nouveau/attachments/20151102/5ef43c10/attachment-0001.html>