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.
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, >bo);
nouveau_bo_ref(NULL, );
nvpb->bgn = nvpb->bo->map;
nvpb->ptr = nvpb->bgn;
push->cur = nvpb->bgn;
SORRY SORRY SORRY :)
Thanks for the consideration.
2015-11-02 15:42 GMT-03:00 Ilia Mirkin :
> E 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
E 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,
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