<div style="line-height:1.7;color:#000000;font-size:14px;font-family:arial">Can anyone give a suggestion, is wait-vblank fully implemented in page_flip() for nouveau drm driver?<br><br><div></div><div id="divNeteaseMailCard"></div><br>At 2011-10-24 14:30:55,chris <wwzbwwzb@163.com> wrote:<br> <blockquote id="isReplyContent" style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid"><div style="line-height:1.7;color:#000000;font-size:14px;font-family:arial">Dear,<br><br>I use NVidia Geforce 7300GT graphics card in my PC, and Linux 3.1rc4 kernel code, git drm 2.4.36. <br> When I run the vbltest program, it prints "60HZ" which indicated the implementation of drmWaitVBlank() and drm_vblank_wait() is correct.<br> But when I run modetest with option " -v -s 12:1280x1024" , it prints high fresh rate up to "150 HZ" . I examing the code , and found that no waiting vblank operation is processed in nouveau_crtc_page_flip() function. The screen produced lots of garbage and blink very much.<br> int<br>nouveau_crtc_page_flip(struct drm_crtc *crtc, struct drm_framebuffer *fb,<br> struct drm_pending_vblank_event *event)<br>{<br>......<br>}<br>I study the i915 intel_crtc_page_flip implementation.<br>static int intel_crtc_page_flip(stru
ct drm_crtc *crtc,<br> struct drm_framebuffer *fb,<br> struct drm_pending_vblank_event *event)<br>{<br>......<br><br> ret = drm_vblank_get(dev, intel_crtc->pipe);<br> if (ret)<br> goto cleanup_objs;<br><br> work->pending_flip_obj = obj;<br><br> work->enable_stall_check = true;<br><br> /* Block clients from rendering to the new back buffer until<br> * the flip occurs and the object is no longer visible.<br> */<br> atomic_add(1 << intel_crtc->plane, &work->old_fb_obj->pending_flip);<br><br> ret = dev_priv->display.queue_flip(dev, crtc, fb, obj);<br> &nb
sp; if (ret)<br> goto cleanup_pending;<br>......<br>}<br><br>after vblank irq acquired, the interrupt isr will wakup the runqueue.<br>6159 static void do_intel_finish_page_flip(struct drm_device *dev,<br>6160 struct drm_crtc *crtc)<br>6161 {<br>......<br>6211 list_add_tail(&e->base.link,<br>6212 &e->base.file_priv->event_list);<br>6213 wake_up_interruptible(&e->base.file_priv->event_wait);<br>6214 }<br>6215<br>6216 drm_vblank_put(dev, intel_crtc->pipe);<br>6217<br><br><br>Is there anyone use the same driver and foun
d this issues can tell me "is it a bug"?<br><br>Thanks!<br><br><br></div><br><br><span title="neteasefooter"><span id="netease_mail_footer"></span></span></blockquote></div><br><br><span title="neteasefooter"><span id="netease_mail_footer"></span></span>