Skip to contentSkip to conversation

atyfb: Remove unneeded calls to wait_for_idle

PATCH In review Antonino A. Daplas 2 participants 3 messages Apr 29, 2006 – May 11, 2006 Framebuffer layer

lore
Share & tools
lore
#0 lore raw

PATCH 4/12 atyfb: Remove unneeded calls to wait_for_idle

The drawing functions of atyfb is unecessary syncing the GPU which is affecting performance. Remove the calls, any direct access by fbcon to the framebuffer will always be preceeded by a call to atyfb_sync().

---

 drivers/video/aty/mach64_accel.c |   10 ----------
 1 files changed, 0 insertions(+), 10 deletions(-)
drivers/video/aty/mach64_accel.c +0 -10
index c98f4a4..1490e5e 100644
@@ -200,8 +200,6 @@ void atyfb_copyarea(struct fb_info *info
 	if (!area->width || !area->height)
 		return;
 	if (!par->accel_flags) {
-		if (par->blitter_may_be_busy)
-			wait_for_idle(par);
 		cfb_copyarea(info, area);
 		return;
 	}
@@ -248,8 +246,6 @@ void atyfb_fillrect(struct fb_info *info
 	if (!rect->width || !rect->height)
 		return;
 	if (!par->accel_flags) {
-		if (par->blitter_may_be_busy)
-			wait_for_idle(par);
 		cfb_fillrect(info, rect);
 		return;
 	}
@@ -288,14 +284,10 @@ void atyfb_imageblit(struct fb_info *inf
 		return;
 	if (!par->accel_flags ||
 	    (image->depth != 1 && info->var.bits_per_pixel != image->depth)) {
-		if (par->blitter_may_be_busy)
-			wait_for_idle(par);
-
 		cfb_imageblit(info, image);
 		return;
 	}
 
-	wait_for_idle(par);
 	pix_width = pix_width_save = aty_ld_le32(DP_PIX_WIDTH, par);
 	host_cntl = aty_ld_le32(HOST_CNTL, par) | HOST_BYTE_ALIGN;
 
@@ -425,8 +417,6 @@ void atyfb_imageblit(struct fb_info *inf
 		}
 	}
 
-	wait_for_idle(par);
-
 	/* restore pix_width */
 	wait_for_fifo(1, par);
 	aty_st_le32(DP_PIX_WIDTH, pix_width_save, par);

-------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642

#1 lore raw
Quoted 3 lines · Antonino A. Daplas

The drawing functions of atyfb is unecessary syncing the GPU which is affecting performance. Remove the calls, any direct access by fbcon to the framebuffer will always be preceeded by a call to atyfb_sync().

Still works on my Mobility :) I'll try to test with older chips later this week, but I don't expect any problems. AFAIK the only case when an engine sync is necessary is 3D/scaler <-> 2D transition on pre-Rage Pro chips.

Signature · 10 lines
Ville Syrjälä
[email protected]
http://www.sci.fi/~syrjala/


-------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid0709&bid&3057&dat1642
#2 lore raw
Quoted 9 lines · Ville Syrjälä
Quoted 3 lines · Antonino A. Daplas

The drawing functions of atyfb is unecessary syncing the GPU which is affecting performance. Remove the calls, any direct access by fbcon to the framebuffer will always be preceeded by a call to atyfb_sync().

Still works on my Mobility :) I'll try to test with older chips later this week, but I don't expect any problems. AFAIK the only case when an engine sync is necessary is 3D/scaler <-> 2D transition on pre-Rage Pro chips.

Now also tested with VT2, Rage II+ and IIC. No problems.

Signature · 10 lines
Ville Syrjälä
[email protected]
http://www.sci.fi/~syrjala/


-------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid0709&bid&3057&dat1642