Jesse,
I ever provide the patch(2D) to ubuntu. The patch will be fix this bug. However it will bring others problems. :(
I doubt I change the wrong location. The original thought is we think front_buffer, back_buffer, depth_buffer is changed after resume, therefore after the resume, we need to remap it. However I put this source code in mode setting, that is means whatever you change resolution, you have to update this. It is not reasonable. Do you have some suggestion where to add this after resume or how to check the condition. I am testing to check if front_buffer, back_buffer, depth_buffer is NULL or not and then change it.
Here are the patches
--- i830_lvds.c_orig 2008-11-30 10:41:11.000000000 -0500
+++ i830_lvds.c 2008-11-30 10:41:37.000000000 -0500
@@ -537,6 +537,11 @@ i830_lvds_mode_set(xf86OutputPtr output,
I830CrtcPrivatePtr intel_crtc = output->crtc->driver_private;
CARD32 pfit_control;
+#ifdef XF86DRI
+ /* 945GME quirk process */
+ if (IS_I945GM(pI830) && !i830_update_dri_buffers(pScrn))
+ FatalError("i830_update_dri_buffers() failed\n");
+#endif
/* The LVDS pin pair will already have been turned on in
* i830_crtc_mode_set since it has a large impact on the DPLL settings.
*/
Jesse,
I ever provide the patch(2D) to ubuntu. The patch will be fix this bug. However it will bring others problems. :(
I doubt I change the wrong location. The original thought is we think front_buffer, back_buffer, depth_buffer is changed after resume, therefore after the resume, we need to remap it. However I put this source code in mode setting, that is means whatever you change resolution, you have to update this. It is not reasonable. Do you have some suggestion where to add this after resume or how to check the condition. I am testing to check if front_buffer, back_buffer, depth_buffer is NULL or not and then change it.
Here are the patches mode_set( xf86OutputPtr output, ivatePtr intel_crtc = output- >crtc-> driver_ private;
--- i830_lvds.c_orig 2008-11-30 10:41:11.000000000 -0500
+++ i830_lvds.c 2008-11-30 10:41:37.000000000 -0500
@@ -537,6 +537,11 @@ i830_lvds_
I830CrtcPr
CARD32 pfit_control;
+#ifdef XF86DRI dri_buffers( pScrn)) "i830_update_ dri_buffers( ) failed\n");
+ /* 945GME quirk process */
+ if (IS_I945GM(pI830) && !i830_update_
+ FatalError(
+#endif
/* The LVDS pin pair will already have been turned on in
* i830_crtc_mode_set since it has a large impact on the DPLL settings.
*/
I