Displaying 20 results from an estimated 78 matches for "out_ring".
2010 May 31
1
[PATCH] nv50/exa: use dual-source blending for component-alpha composite
..._exa.c   |   45 ++++++++++++++++++++-------------------------
 3 files changed, 28 insertions(+), 56 deletions(-)
diff --git a/src/nv50_accel.c b/src/nv50_accel.c
index 1218e18..db8c744 100644
--- a/src/nv50_accel.c
+++ b/src/nv50_accel.c
@@ -213,7 +213,7 @@ NVAccelInitNV50TCL(ScrnInfoPtr pScrn)
 	OUT_RING  (chan, (0 << NV50TCL_CB_DEF_SET_BUFFER_SHIFT) | 0x4000);
 	BEGIN_RING(chan, tesla, NV50TCL_CB_ADDR, 1);
 	OUT_RING  (chan, 0);
-	BEGIN_RING_NI(chan, tesla, NV50TCL_CB_DATA(0), 16);
+	BEGIN_RING_NI(chan, tesla, NV50TCL_CB_DATA(0), 22);
 	OUT_RING  (chan, 0x80000000);
 	OUT_RING  (chan, 0x9000...
2009 Dec 30
4
[PATCH 1/3] nv50: remove vtxbuf stateobject after a referenced vtxbuf is mapped
- This avoids problematic "reloc'ed while mapped" messages and
some associated corruption as well.
Signed-off-by: Maarten Maathuis <madman2003 at gmail.com>
---
 src/gallium/drivers/nouveau/nouveau_screen.c   |   21 +++++++++++++++++++++
 src/gallium/drivers/nouveau/nouveau_screen.h   |    3 +++
 src/gallium/drivers/nouveau/nouveau_stateobj.h |   13 +++++++++++++
2010 Feb 05
1
[PATCH] nv50/accel: Fix mangled A8+A8 shader.
...ts aren't actually used.
---
 src/nv50_accel.c |    5 +++--
 1 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/src/nv50_accel.c b/src/nv50_accel.c
index 5fa539c..1218e18 100644
--- a/src/nv50_accel.c
+++ b/src/nv50_accel.c
@@ -291,7 +291,7 @@ NVAccelInitNV50TCL(ScrnInfoPtr pScrn)
 	OUT_RING  (chan, (0 << NV50TCL_CB_DEF_SET_BUFFER_SHIFT) | 0x4000);
 	BEGIN_RING(chan, tesla, NV50TCL_CB_ADDR, 1);
 	OUT_RING  (chan, 0);
-	BEGIN_RING_NI(chan, tesla, NV50TCL_CB_DATA(0), 15);
+	BEGIN_RING_NI(chan, tesla, NV50TCL_CB_DATA(0), 16);
 	OUT_RING  (chan, 0x80000000);
 	OUT_RING  (chan, 0x9000...
2020 Feb 06
0
[PATCH 2/4] drm/nouveau: Move struct nouveau_framebuffer.vma to struct nouveau_fbdev
...->par;
-	struct nouveau_framebuffer *fb = nouveau_framebuffer(nfbdev->helper.fb);
 	struct drm_device *dev = nfbdev->helper.dev;
 	struct nouveau_drm *drm = nouveau_drm(dev);
 	struct nouveau_channel *chan = drm->channel;
@@ -240,8 +239,8 @@ nv50_fbcon_accel_init(struct fb_info *info)
 	OUT_RING(chan, info->fix.line_length);
 	OUT_RING(chan, info->var.xres_virtual);
 	OUT_RING(chan, info->var.yres_virtual);
-	OUT_RING(chan, upper_32_bits(fb->vma->addr));
-	OUT_RING(chan, lower_32_bits(fb->vma->addr));
+	OUT_RING(chan, upper_32_bits(nfbdev->vma->addr));
+	OUT_RING...
2011 Oct 10
2
2 remaining patches in my patch queue that can be merged
Hi,
Here I post these 2 misc patches.
Best regards,
	Maxim Levitsky
2009 Nov 04
1
[PATCH] nv10/exa: Spring-cleaning
...mber for width, we can
+		 * round up uneven numbers here because EXA always
+		 * gives 64 byte aligned pixmaps and for all formats
+		 * we support 64 bytes represents an even number of
+		 * pixels
+		 */
 		w = (w + 1) &~ 1;
 
 		BEGIN_RING(chan, celsius, NV10TCL_TX_NPOT_PITCH(unit), 1);
 		OUT_RING  (chan, exaGetPixmapPitch(pixmap) << 16);
 
 		BEGIN_RING(chan, celsius, NV10TCL_TX_NPOT_SIZE(unit), 1);
-		OUT_RING  (chan, (w<<16) | Pict->pDrawable->height);
+		OUT_RING  (chan, w << 16 | h);
 	}
 
 	BEGIN_RING(chan, celsius, NV10TCL_TX_FORMAT(unit), 1 );
@@ -403,214 +411...
2010 Apr 20
1
[PATCH] nv30/exa : cleanup from nv40 exa
...blend = DF(SRC_COLOR);
+		} else if (dblend == DF(ONE_MINUS_SRC_ALPHA)) {
+			dblend = DF(ONE_MINUS_SRC_COLOR);
 		}
 	}
 
-	if (sblend == BF(ONE) && dblend == BF(ZERO)) {
+	if (sblend == SF(ONE) && dblend == DF(ZERO)) {
 		BEGIN_RING(chan, rankine, NV34TCL_BLEND_FUNC_ENABLE, 1);
 		OUT_RING  (chan, 0);
 	} else {
 		BEGIN_RING(chan, rankine, NV34TCL_BLEND_FUNC_ENABLE, 3);
 		OUT_RING  (chan, 1);
-		OUT_RING  (chan, (sblend << 16) | sblend);
-		OUT_RING  (chan, (dblend << 16) | dblend);
+		OUT_RING  (chan, sblend);
+		OUT_RING  (chan, dblend);
 	}
 }
 
@@ -305,43 +255,47 @@...
2009 Oct 14
0
[PATCH 3/7] nv50: submit user vbo data through the fifo
...nv50->screen->tesla->channel;
 	struct nouveau_grobj *tesla = nv50->screen->tesla;
+	boolean ret;
 
 	nv50_state_validate(nv50);
 
@@ -142,17 +155,22 @@ nv50_draw_arrays(struct pipe_context *pipe, unsigned mode, unsigned start,
 
 	BEGIN_RING(chan, tesla, NV50TCL_VERTEX_BEGIN, 1);
 	OUT_RING  (chan, nv50_prim(mode));
-	BEGIN_RING(chan, tesla, NV50TCL_VERTEX_BUFFER_FIRST, 2);
-	OUT_RING  (chan, start);
-	OUT_RING  (chan, count);
+
+	if (nv50->vbo_fifo)
+		ret = nv50_push_arrays(nv50, start, count);
+	else {
+		BEGIN_RING(chan, tesla, NV50TCL_VERTEX_BUFFER_FIRST, 2);
+		OUT_RING  (cha...
2009 Apr 10
0
[PATCH/Gallium] nv50_clear again (might work better)
...const float *rgba, double depth, unsigned stencil)
@@ -40,26 +47,32 @@ nv50_clear(struct pipe_context *pipe, unsigned buffers,
 		return;
 	if (buffers & PIPE_CLEAR_COLOR) {
-		BEGIN_RING(chan, tesla, NV50TCL_CLEAR_COLOR(0), 4*fb->nr_cbufs);
-		for (i = 0; i < fb->nr_cbufs; i++) {
-			OUT_RING  (chan, fui(rgba[0]));
-			OUT_RING  (chan, fui(rgba[1]));
-			OUT_RING  (chan, fui(rgba[2]));
-			OUT_RING  (chan, fui(rgba[3]));
-		}
-		mode |= 0x3c;
+		assert(fb->nr_cbufs > 0);
+		BEGIN_RING(chan, tesla, NV50TCL_CLEAR_COLOR(0), 4);
+		OUT_RING  (chan, fui(rgba[0]));
+		OUT_RING  (chan, f...
2010 Jan 03
1
[PATCH] nouveau: nv50: fix ->pseudo_palette usage
...->dev;
 	struct drm_nouveau_private *dev_priv = dev->dev_private;
 	struct nouveau_channel *chan = dev_priv->channel;
+	uint32_t color;
 
 	if (info->state != FBINFO_STATE_RUNNING)
 		return;
@@ -31,7 +32,12 @@ nv50_fbcon_fillrect(struct fb_info *info, const struct fb_fillrect *rect)
 		OUT_RING(chan, 1);
 	}
 	BEGIN_RING(chan, NvSub2D, 0x0588, 1);
-	OUT_RING(chan, rect->color);
+	if (info->fix.visual == FB_VISUAL_TRUECOLOR ||
+	    info->fix.visual == FB_VISUAL_DIRECTCOLOR) {
+		color = ((uint32_t *)info->pseudo_palette)[rect->color];
+	} else
+		color = rect->color;
+	O...
2009 Dec 26
2
[PATCH 1/3] drm/nouveau: Allocate a per-channel instance of NV_SW.
...ret;
+
 	/* NV_MEMORY_TO_MEMORY_FORMAT requires a notifier object */
 	ret = nouveau_notifier_alloc(chan, NvNotify0, 32, &chan->m2mf_ntfy);
 	if (ret)
@@ -87,6 +97,13 @@ nouveau_dma_init(struct nouveau_channel *chan)
 	BEGIN_RING(chan, NvSubM2MF, NV_MEMORY_TO_MEMORY_FORMAT_DMA_NOTIFY, 1);
 	OUT_RING(chan, NvNotify0);
 
+	/* Initialise NV_SW */
+	ret = RING_SPACE(chan, 2);
+	if (ret)
+		return ret;
+	BEGIN_RING(chan, NvSubSw, 0, 1);
+	OUT_RING(chan, NvSw);
+
 	/* Sit back and pray the channel works.. */
 	FIRE_RING(chan);
 
diff --git a/drivers/gpu/drm/nouveau/nouveau_dma.h b/drivers/gpu/drm/no...
2016 Jul 28
0
[PATCH] drm/nouveau/fbcon: fix font width not divisible by 8
...el.org
Index: linux-2.6/drivers/gpu/drm/nouveau/nvc0_fbcon.c
===================================================================
--- linux-2.6.orig/drivers/gpu/drm/nouveau/nvc0_fbcon.c
+++ linux-2.6/drivers/gpu/drm/nouveau/nvc0_fbcon.c
@@ -125,7 +125,7 @@ nvc0_fbcon_imageblit(struct fb_info *inf
 	OUT_RING  (chan, 0);
 	OUT_RING  (chan, image->dy);
 
-	dwords = ALIGN(image->width * image->height, 32) >> 5;
+	dwords = ALIGN(ALIGN(image->width, 8) * image->height, 32) >> 5;
 	while (dwords) {
 		int push = dwords > 2047 ? 2047 : dwords;
 
Index: linux-2.6/drivers/gpu/drm/n...
2010 Jan 18
1
[PATCH 1/2] nv30-nv40: Rewrite primitive splitting and emission
...nv30_primitive* prim)
+{
+	struct nv30_screen *screen = prim->nv30->screen;
+	struct nouveau_channel *chan = screen->base.channel;
+	struct nouveau_grobj *rankine = screen->rankine;
+
+	if(prim->startv & START_INDEX)
+	{
+		BEGIN_RING(chan, rankine, NV34TCL_VB_INDEX_BATCH, 1);
+		OUT_RING  (chan, (prim->startv & ~START_INDEX));
+	}
+	else
+	{
+		BEGIN_RING(chan, rankine, NV34TCL_VB_ELEMENT_U32, 1);
+		OUT_RING  (chan, prim->startv);
+	}
+}
+
+static inline unsigned
+nv30_primitive_begin(struct nv30_primitive* prim, unsigned* pstart)
+{
+	struct nv30_screen *screen = prim-&...
2011 Oct 09
11
[PATCH 01/10]: nouveau: assorted fixes
Hi,
Here is my patch queue I accumulated over quite a long time.
Patches 1-6 are bugfixes, and rest is mostly RFC.
Comments are welcome.
Best regards,
	Maxim Levitsky
2009 Oct 22
1
[PATCH] nv04-nv40/exa: Reorder the commands in PrepareCopy to match the blob.
...ixmap, PixmapPtr pDstPixmap, int dx, int dy,
 		return FALSE;
 
 	planemask |= ~0 << pDstPixmap->drawable.bitsPerPixel;
-	if (planemask != ~0 || alu != GXcopy) {
-		if (pDstPixmap->drawable.bitsPerPixel == 32)
-			return FALSE;
-		BEGIN_RING(chan, blit, NV04_IMAGE_BLIT_OPERATION, 1);
-		OUT_RING  (chan, 1); /* ROP_AND */
-		NV04EXASetROP(pScrn, alu, planemask);
-	} else {
-		BEGIN_RING(chan, blit, NV04_IMAGE_BLIT_OPERATION, 1);
-		OUT_RING  (chan, 3); /* SRCCOPY */
-	}
+	if ((planemask != ~0 || alu != GXcopy)
+	    && pDstPixmap->drawable.bitsPerPixel == 32)
+		return FALSE;...
2009 Jul 02
1
[PATCH] drm/nv50: wait for fifo completion when needed
...rtc.c b/drivers/gpu/drm/nouveau/nv50_crtc.c
index d8e8f1b..dba8b93 100644
--- a/drivers/gpu/drm/nouveau/nv50_crtc.c
+++ b/drivers/gpu/drm/nouveau/nv50_crtc.c
@@ -176,6 +176,7 @@ static int nv50_crtc_set_dither(struct nouveau_crtc *crtc, bool update)
 		BEGIN_RING(evo, 0, NV50_UPDATE_DISPLAY, 1);
 		OUT_RING  (evo, 0);
 		FIRE_RING (evo);
+		RING_WAIT (evo);
 	}
 
 	return 0;
@@ -294,6 +295,7 @@ nv50_crtc_set_scale(struct nouveau_crtc *crtc, int scaling_mode, bool update)
 		BEGIN_RING(evo, 0, NV50_UPDATE_DISPLAY, 1);
 		OUT_RING  (evo, 0);
 		FIRE_RING (evo);
+		RING_WAIT (evo);
 	}
 
 	return 0;
@@ -...
2020 Feb 06
5
[PATCH 0/4] drm/nouveau: Remove struct nouveau_framebuffer
All fields in struct nouveau_framebuffer appear to be obsolete. The
data structure can be replaced by struct drm_framebuffer entirely.
Patch 1 removes several unused fields from struct nouveau_framebuffer.
Patch 2 moves the field vma to struct nouveau_fbdev. The information
in vma is only relevant for fbdev emulation, and as such he field is
only used there.
Patch 3 removes nvbo from struct
2009 Dec 25
0
[MESA PATCH 5/5] nv50: update after nouveau_class.h update
...transfer.c b/src/gallium/drivers/nv50/nv50_transfer.c
index 4d9afa6..53e34a4 100644
--- a/src/gallium/drivers/nv50/nv50_transfer.c
+++ b/src/gallium/drivers/nv50/nv50_transfer.c
@@ -47,7 +47,7 @@ nv50_transfer_rect_m2mf(struct pipe_screen *pscreen,
 			NV50_MEMORY_TO_MEMORY_FORMAT_LINEAR_IN, 1);
 		OUT_RING  (chan, 1);
 		BEGIN_RING(chan, m2mf,
-			NV50_MEMORY_TO_MEMORY_FORMAT_PITCH_IN, 1);
+			NV04_MEMORY_TO_MEMORY_FORMAT_PITCH_IN, 1);
 		OUT_RING  (chan, src_pitch);
 		src_offset += (sy * src_pitch) + (sx * cpp);
 	} else {
@@ -66,7 +66,7 @@ nv50_transfer_rect_m2mf(struct pipe_screen *pscreen,
 			N...
2013 Nov 12
6
[PATCH 1/7] drm/nouveau: fix m2mf copy to tiled gart
...64)(4 * 1024 * 1024));
 		stride  = 16 * 4;
 		height  = amount / stride;
 
-		if (old_mem->mem_type == TTM_PL_VRAM &&
-		    nouveau_bo_tile_layout(nvbo)) {
-			ret = RING_SPACE(chan, 8);
-			if (ret)
-				return ret;
-
+		if (src_tiled) {
 			BEGIN_NV04(chan, NvSubCopy, 0x0200, 7);
 			OUT_RING  (chan, 0);
 			OUT_RING  (chan, 0);
@@ -831,19 +831,10 @@ nv50_bo_move_m2mf(struct nouveau_channel *chan, struct ttm_buffer_object *bo,
 			OUT_RING  (chan, 0);
 			OUT_RING  (chan, 0);
 		} else {
-			ret = RING_SPACE(chan, 2);
-			if (ret)
-				return ret;
-
 			BEGIN_NV04(chan, NvSubCopy, 0x020...
2020 May 20
2
[PATCH] nouveau/hmm: fix migrate zero page to GPU
...aper) {
+	case NOUVEAU_APER_VRAM:
+		BEGIN_IMC0(chan, NvSubCopy, 0x0264, 0);
+			break;
+	case NOUVEAU_APER_HOST:
+		BEGIN_IMC0(chan, NvSubCopy, 0x0264, 1);
+		break;
+	default:
+		return -EINVAL;
+	}
+	launch_dma |= 0x00002000; /* DST_TYPE_PHYSICAL. */
+
+	BEGIN_NVC0(chan, NvSubCopy, 0x0700, 3);
+	OUT_RING(chan, 0);
+	OUT_RING(chan, 0);
+	OUT_RING(chan, remap);
+	BEGIN_NVC0(chan, NvSubCopy, 0x0408, 2);
+	OUT_RING(chan, upper_32_bits(dst_addr));
+	OUT_RING(chan, lower_32_bits(dst_addr));
+	BEGIN_NVC0(chan, NvSubCopy, 0x0418, 1);
+	OUT_RING(chan, length >> 3);
+	BEGIN_NVC0(chan, NvSubCopy, 0x0300...