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