search for: nouveau_pushbuf

Displaying 20 results from an estimated 98 matches for "nouveau_pushbuf".

2018 Jan 11
0
[PATCH libdrm] nouveau: Support fence FDs
From: Thierry Reding <treding at nvidia.com> Add a new nouveau_pushbuf_kick_fence() function that takes and emits a sync fence FD. The fence FD can be waited on, or merged with other fence FDs, or passed back to the kernel as a prerequisite for a subsequent HW operation. Based heavily on work by Lauri Peltonen <lpeltonen at nvidia.com> Signed-off-by: Thierry R...
2010 Jan 29
2
[PATCH 1/2] libdrm/nouveau: new optimized libdrm pushbuffer ABI
This patch changes the pushbuffer ABI to: 1. No longer use/expose nouveau_pushbuffer. Everything is directly in nouveau_channel. This saves the extra "pushbuf" pointer dereference. 2. Use cur/end pointers instead of tracking the remaining size. Pushing data now only needs to alter cur and not both cur and remaining. The goal is to make the *_RING macros faster...
2014 Jul 31
1
[libdrm PATCH 1/3] nouveau: Only export public functions.
...RIVATE_H__ +#include <libdrm.h> #include <xf86drm.h> #include <xf86atomic.h> #include <pthread.h> diff --git a/nouveau/pushbuf.c b/nouveau/pushbuf.c index 4f77881..6e703a4 100644 --- a/nouveau/pushbuf.c +++ b/nouveau/pushbuf.c @@ -529,7 +529,7 @@ pushbuf_validate(struct nouveau_pushbuf *push, bool retry) return ret; } -int +drm_public int nouveau_pushbuf_new(struct nouveau_client *client, struct nouveau_object *chan, int nr, uint32_t size, bool immediate, struct nouveau_pushbuf **ppush) @@ -600,7 +600,7 @@ nouveau_pushbuf_new(struct nouveau_client *client, str...
2015 Dec 16
0
[libdrm v3 13/14] nouveau: clean up nouveau.h, noting deprecated members/functions
..., int bins, - struct nouveau_bufctx **); +int nouveau_bufctx_new(struct nouveau_client *, int bins, + struct nouveau_bufctx **); void nouveau_bufctx_del(struct nouveau_bufctx **); struct nouveau_bufref * nouveau_bufctx_refn(struct nouveau_bufctx *, int bin, @@ -249,16 +206,16 @@ struct nouveau_pushbuf_refn { uint32_t flags; }; -int nouveau_pushbuf_new(struct nouveau_client *, struct nouveau_object *channel, - int nr, uint32_t size, bool immediate, - struct nouveau_pushbuf **); +int nouveau_pushbuf_new(struct nouveau_client *, struct nouveau_object *chan, + int nr, uint32_t size, bo...
2013 Apr 30
1
[Bug 64074] New: Mesalib Installation Error
.../nouveau Product: Mesa Mesalib installation : i have set environement variable export NOUVEAU_CFLAGS="-I/usr/include/nouveau/ \ -I/usr/include/drm/" export NOUVEAU_LIBS="-L/usr/local/lib/" after i run ./configure then i run make i get this message usr/include/drm/nouveau_pushbuf.h: In function ?OUT_RING?: /usr/include/drm/nouveau_pushbuf.h:72: error: ?struct nouveau_channel? has no member named ?cur? /usr/include/drm/nouveau_pushbuf.h: In function ?AVAIL_RING?: /usr/include/drm/nouveau_pushbuf.h:93: error: ?struct nouveau_channel? has no member named ?end? /usr/include/drm...
2014 Jun 16
2
[PATCH 1/2] gallium/nouveau: decouple nouveau_fence implementation from screen
...*mgr = fence->mgr; uint32_t spins = 0; /* wtf, someone is waiting on a fence in flush_notify handler? */ @@ -193,19 +193,19 @@ nouveau_fence_wait(struct nouveau_fence *fence) nouveau_fence_emit(fence); if (fence->state < NOUVEAU_FENCE_STATE_FLUSHED) - if (nouveau_pushbuf_kick(screen->pushbuf, screen->pushbuf->channel)) + if (mgr->flush(mgr)) return FALSE; - if (fence == screen->fence.current) - nouveau_fence_next(screen); + if (fence == mgr->current) + nouveau_fence_next(mgr); do { - nouveau_fence_upda...
2014 Jun 17
2
[PATCH try 2 1/2] gallium/nouveau: decouple nouveau_fence implementation from screen
...ce_mgr *mgr = fence->mgr; uint32_t spins = 0; /* wtf, someone is waiting on a fence in flush_notify handler? */ @@ -193,19 +193,19 @@ nouveau_fence_wait(struct nouveau_fence *fence) nouveau_fence_emit(fence); if (fence->state < NOUVEAU_FENCE_STATE_FLUSHED) - if (nouveau_pushbuf_kick(screen->pushbuf, screen->pushbuf->channel)) + if (mgr->flush(mgr)) return FALSE; - if (fence == screen->fence.current) - nouveau_fence_next(screen); + if (fence == mgr->current) + nouveau_fence_next(mgr); do { - nouveau_fence_update(s...
2014 Jun 17
0
[PATCH try 2 2/2] gallium/nouveau: move pushbuf and fences to context
...uint32_t buf_cache_frame; } stats; + + struct nouveau_fence_mgr fence; }; static INLINE struct nouveau_context * @@ -91,6 +93,7 @@ nouveau_context_destroy(struct nouveau_context *ctx) if (ctx->scratch.bo[i]) nouveau_bo_ref(NULL, &ctx->scratch.bo[i]); + nouveau_pushbuf_del(&ctx->pushbuf); FREE(ctx); } @@ -106,4 +109,6 @@ nouveau_context_update_frame_stats(struct nouveau_context *nv) } } +int nouveau_context_fence_kick(struct nouveau_fence_mgr *); + #endif diff --git a/src/gallium/drivers/nouveau/nouveau_fence.c b/src/gallium/drivers/nouveau/...
2014 Jun 21
3
[Mesa-dev] [PATCH try 2 2/2] gallium/nouveau: move pushbuf and fences to context
...gt; + > + struct nouveau_fence_mgr fence; > }; > > static INLINE struct nouveau_context * > @@ -91,6 +93,7 @@ nouveau_context_destroy(struct nouveau_context *ctx) > if (ctx->scratch.bo[i]) > nouveau_bo_ref(NULL, &ctx->scratch.bo[i]); > > + nouveau_pushbuf_del(&ctx->pushbuf); > FREE(ctx); > } > > @@ -106,4 +109,6 @@ nouveau_context_update_frame_stats(struct nouveau_context *nv) > } > } > > +int nouveau_context_fence_kick(struct nouveau_fence_mgr *); > + > #endif > diff --git a/src/gallium/drivers/nou...
2016 Oct 27
2
[PATCH v2 5/7] nvc0: refactor TIC uploads to allow different specifics per generation
...0_defs.xml.h" > #include "hwdefs/nv50_texture.h" > +#include "hwdefs/gm107_texture.xml.h" > #include "hwdefs/nv_3ddefs.xml.h" > > /* subchannel assignments, compatible with kepler's fixed layout */ > @@ -108,4 +109,59 @@ PUSH_DATAu(struct nouveau_pushbuf *push, struct nouveau_bo *bo, > } > } > > +static __inline__ void > +PUSH_TIC(struct nouveau_pushbuf *push, struct nouveau_bo *bo, unsigned offset, > + unsigned width, unsigned height, unsigned pitch, unsigned format) > +{ > + if (push->client->device->chipset &...
2014 Jul 01
1
[PATCH 1/2] nv50: do an explicit flush on draw when there are persistent buffers
...0_vbo.c index 7c2b7ff..5a4a457 100644 --- a/src/gallium/drivers/nouveau/nv50/nv50_vbo.c +++ b/src/gallium/drivers/nouveau/nv50/nv50_vbo.c @@ -747,7 +747,7 @@ nv50_draw_vbo(struct pipe_context *pipe, const struct pipe_draw_info *info) { struct nv50_context *nv50 = nv50_context(pipe); struct nouveau_pushbuf *push = nv50->base.pushbuf; - int i; + int i, s; /* NOTE: caller must ensure that (min_index + index_bias) is >= 0 */ nv50->vb_elt_first = info->min_index + info->index_bias; @@ -776,6 +776,33 @@ nv50_draw_vbo(struct pipe_context *pipe, const struct pipe_draw_info *info...
2015 Jun 22
2
[RFC PATCH 5/8] nv50: prevent NULL pointer dereference with pipe_query functions
...> + return; > + > nv50_query_allocate(nv50_context(pipe), nv50_query(pq), 0); > nouveau_fence_ref(NULL, &nv50_query(pq)->fence); > FREE(nv50_query(pq)); > @@ -152,6 +155,9 @@ nv50_query_begin(struct pipe_context *pipe, struct pipe_query *pq) > struct nouveau_pushbuf *push = nv50->base.pushbuf; > struct nv50_query *q = nv50_query(pq); > > + if (!pq) > + return FALSE; > + > /* For occlusion queries we have to change the storage, because a previous > * query might set the initial render conition to FALSE even *after* we...
2015 Nov 26
0
[libdrm 08/13] nouveau: make use of nouveau_drm::fd instead of nouveau_device::fd
...eturn ret; @@ -646,6 +643,7 @@ int nouveau_bo_wait(struct nouveau_bo *bo, uint32_t access, struct nouveau_client *client) { + struct nouveau_drm *drm = nouveau_drm(&bo->device->object); struct nouveau_bo_priv *nvbo = nouveau_bo(bo); struct drm_nouveau_gem_cpu_prep req; struct nouveau_pushbuf *push; @@ -669,7 +667,7 @@ nouveau_bo_wait(struct nouveau_bo *bo, uint32_t access, if (access & NOUVEAU_BO_NOBLOCK) req.flags |= NOUVEAU_GEM_CPU_PREP_NOWAIT; - ret = drmCommandWrite(bo->device->fd, DRM_NOUVEAU_GEM_CPU_PREP, + ret = drmCommandWrite(drm->fd, DRM_NOUVEAU_GEM_CPU_PR...
2016 Oct 16
0
[PATCH 3/5] nvc0: rename BEGIN_IMC0 to IMMED_NVC0
...Ilia Mirkin <imirkin at alum.mit.edu> --- src/nouveau_local.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/nouveau_local.h b/src/nouveau_local.h index 3de69a2..dd49395 100644 --- a/src/nouveau_local.h +++ b/src/nouveau_local.h @@ -237,7 +237,7 @@ BEGIN_NIC0(struct nouveau_pushbuf *push, int subc, int mthd, int size) } static inline void -BEGIN_IMC0(struct nouveau_pushbuf *push, int subc, int mthd, int data) +IMMED_NVC0(struct nouveau_pushbuf *push, int subc, int mthd, int data) { PUSH_DATA (push, 0x80000000 | (data << 16) | (subc << 13) | (mthd / 4)); }...
2014 Sep 26
14
[RFC] Explicit synchronization for Nouveau
Hi guys, I'd like to start a new thread about explicit fence synchronization. This time with a Nouveau twist. :-) First, let me define what I understand by implicit/explicit sync: Implicit synchronization * Fences are attached to buffers * Kernel manages fences automatically based on buffer read/write access Explicit synchronization * Fences are passed around independently * Kernel takes
2016 Oct 17
2
[PATCH 4/5] nvc0: refactor TIC uploads to allow different specifies per generation
...0_defs.xml.h" > #include "hwdefs/nv50_texture.h" > +#include "hwdefs/gm107_texture.xml.h" > #include "hwdefs/nv_3ddefs.xml.h" > > /* subchannel assignments, compatible with kepler's fixed layout */ > @@ -108,4 +109,59 @@ PUSH_DATAu(struct nouveau_pushbuf *push, struct nouveau_bo *bo, > } > } > > +static __inline__ void > +PUSH_TIC(struct nouveau_pushbuf *push, struct nouveau_bo *bo, unsigned offset, > + unsigned width, unsigned height, unsigned pitch, unsigned format) > +{ > + if (push->client->device->chipset &...
2015 Nov 27
14
[libdrm v2 01/14] nouveau: import and install a selection of nvif headers from the kernel
From: Ben Skeggs <bskeggs at redhat.com> This commit also modifies the install path of the main libdrm_nouveau header to be under a nouveau/ subdirectory. Signed-off-by: Ben Skeggs <bskeggs at redhat.com> --- include/drm/nouveau_drm.h | 1 + nouveau/Makefile.am | 11 +++- nouveau/libdrm_nouveau.pc.in | 2 +- nouveau/nvif/cl0080.h | 45 ++++++++++++++
2016 Oct 27
0
[PATCH v2 5/7] nvc0: refactor TIC uploads to allow different specifics per generation
...; #include "hwdefs/nv50_defs.xml.h" #include "hwdefs/nv50_texture.h" +#include "hwdefs/gm107_texture.xml.h" #include "hwdefs/nv_3ddefs.xml.h" /* subchannel assignments, compatible with kepler's fixed layout */ @@ -108,4 +109,59 @@ PUSH_DATAu(struct nouveau_pushbuf *push, struct nouveau_bo *bo, } } +static __inline__ void +PUSH_TIC(struct nouveau_pushbuf *push, struct nouveau_bo *bo, unsigned offset, + unsigned width, unsigned height, unsigned pitch, unsigned format) +{ + if (push->client->device->chipset < 0x110) { + unsigned tic2 = 0xd000...
2014 Jun 15
4
[PATCH v2 0/3] ARB_viewport_array for nvc0
This patch-series implements the ARB_viewport_array for nvc0 and does a little house-cleanig afterwords. V2: Add Release-Notes, mark this in GL3 as done for nvc0 Don't mark the scissors dirty when we don't need to do that Tobias Klausmann (3): nvc0: implement multiple viewports/scissors, enable ARB_viewport_array docs: update GL3.txt, relnotes: mark GL_ARB_viewport_array as done
2015 Nov 26
18
[libdrm 01/13] nouveau: move more abi16-specific logic into abi16.c
From: Ben Skeggs <bskeggs at redhat.com> Signed-off-by: Ben Skeggs <bskeggs at redhat.com> --- nouveau/abi16.c | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++----- nouveau/nouveau.c | 56 +++++++------------------------------------------ nouveau/private.h | 7 ++----- 3 files changed, 67 insertions(+), 58 deletions(-) diff --git a/nouveau/abi16.c b/nouveau/abi16.c index