Errrr.... are you sure? nv30_screen_create starts with a bunch of stuff init'ing objects, and then does:
BEGIN_NV04(push, NV01_SUBC(3D, OBJECT), 1); PUSH_DATA (push, screen->eng3d->handle); And as you can see in nv30_winsys.h: static inline void BEGIN_NV04(struct nouveau_pushbuf *push, int subc, int mthd, int size) { PUSH_SPACE(push, size + 1); PUSH_DATA (push, 0x00000000 | (size << 18) | (subc << 13) | mthd); } and PUSH_SPACE in turn calls nouveau_pushbuf_space. -ilia On Mon, Nov 2, 2015 at 1:36 PM, Daniel Melo Jorge da Cunha <dmjcu...@gmail.com> wrote: > 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 <imir...@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 >> <dmjcu...@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@lists.freedesktop.org >> > http://lists.freedesktop.org/mailman/listinfo/nouveau >> > > > _______________________________________________ Nouveau mailing list Nouveau@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/nouveau