2011/10/25 chris <wwzbwwzb@xxxxxxx>: > Can anyone give a suggestion, is wait-vblank fully implemented in > page_flip() for nouveau drm driver? > > > At 2011-10-24 14:30:55,chris <wwzbwwzb@xxxxxxx> wrote: > > Dear, > > I use NVidia Geforce 7300GT graphics card in my PC, and Linux 3.1rc4 kernel > code, git drm 2.4.36. > When I run the vbltest program, it prints "60HZ" which indicated the > implementation of drmWaitVBlank() and drm_vblank_wait() is correct. > 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. > int > nouveau_crtc_page_flip(struct drm_crtc *crtc, struct drm_framebuffer *fb, > struct drm_pending_vblank_event *event) > { > ...... > } > I study the i915 intel_crtc_page_flip implementation. > static int intel_crtc_page_flip(stru ct drm_crtc *crtc, > struct drm_framebuffer *fb, > struct drm_pending_vblank_event *event) > { > ...... > > ret = drm_vblank_get(dev, intel_crtc->pipe); > if (ret) > goto cleanup_objs; > > work->pending_flip_obj = obj; > > work->enable_stall_check = true; > > /* Block clients from rendering to the new back buffer until > * the flip occurs and the object is no longer visible. > */ > atomic_add(1 << intel_crtc->plane, &work->old_fb_obj->pending_flip); > > ret = dev_priv->display.queue_flip(dev, crtc, fb, obj); > &am p;nb sp; if (ret) > goto cleanup_pending; > ...... > } > > after vblank irq acquired, the interrupt isr will wakup the runqueue. > 6159 static void do_intel_finish_page_flip(struct drm_device *dev, > 6160 struct drm_crtc *crtc) > 6161 { > ...... > 6211 list_add_tail(&e->base.link, > 6212 &e->base.file_priv->event_list); > 6213 wake_up_interruptible(&e->base.file_priv->event_wait); > 6214 } > 6215 > 6216 drm_vblank_put(dev, intel_crtc->pipe); > 6217 > > > Is there anyone use the same driver and foun d this issues can tell me "is > it a bug"? > > Thanks! > > > > > > > > _______________________________________________ > dri-devel mailing list > dri-devel@xxxxxxxxxxxxxxxxxxxxx > http://lists.freedesktop.org/mailman/listinfo/dri-devel > > It seems to be, the actual page flipping is done by software method (see nv04_graph_mthd_page_flip). There is one thing i'm unsure about and that is that we wait for the rendering to be done to the current frontbuffer and not the current backbuffer (this is only done if the page flip channel is different than the rendering channel). Maybe someone else can comment on that. -- Far away from the primal instinct, the song seems to fade away, the river get wider between your thoughts and the things we do and say. _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel