Lines Matching refs:stdu

116 static void vmw_stdu_destroy(struct vmw_screen_target_display_unit *stdu);
133 static int vmw_stdu_pin_display(struct vmw_screen_target_display_unit *stdu) in vmw_stdu_pin_display() argument
135 return vmw_resource_pin(&stdu->display_srf->res, false); in vmw_stdu_pin_display()
150 static void vmw_stdu_unpin_display(struct vmw_screen_target_display_unit *stdu) in vmw_stdu_unpin_display() argument
152 if (stdu->display_srf) { in vmw_stdu_unpin_display()
153 struct vmw_resource *res = &stdu->display_srf->res; in vmw_stdu_unpin_display()
157 if (stdu->content_fb_type != SAME_AS_DISPLAY) { in vmw_stdu_unpin_display()
159 stdu->content_fb_type = SAME_AS_DISPLAY; in vmw_stdu_unpin_display()
162 stdu->display_srf = NULL; in vmw_stdu_unpin_display()
196 struct vmw_screen_target_display_unit *stdu) in vmw_stdu_define_st() argument
213 cmd->body.stid = stdu->base.unit; in vmw_stdu_define_st()
214 cmd->body.width = stdu->display_srf->base_size.width; in vmw_stdu_define_st()
215 cmd->body.height = stdu->display_srf->base_size.height; in vmw_stdu_define_st()
218 cmd->body.xRoot = stdu->base.crtc.x; in vmw_stdu_define_st()
219 cmd->body.yRoot = stdu->base.crtc.y; in vmw_stdu_define_st()
221 if (!stdu->base.is_implicit) { in vmw_stdu_define_st()
222 cmd->body.xRoot = stdu->base.gui_x; in vmw_stdu_define_st()
223 cmd->body.yRoot = stdu->base.gui_y; in vmw_stdu_define_st()
228 stdu->defined = true; in vmw_stdu_define_st()
245 struct vmw_screen_target_display_unit *stdu, in vmw_stdu_bind_st() argument
256 if (!stdu->defined) { in vmw_stdu_bind_st()
275 cmd->body.stid = stdu->base.unit; in vmw_stdu_bind_st()
323 struct vmw_screen_target_display_unit *stdu) in vmw_stdu_update_st() argument
326 struct drm_crtc *crtc = &stdu->base.crtc; in vmw_stdu_update_st()
328 if (!stdu->defined) { in vmw_stdu_update_st()
340 vmw_stdu_populate_update(cmd, stdu->base.unit, 0, crtc->mode.hdisplay, in vmw_stdu_update_st()
357 struct vmw_screen_target_display_unit *stdu) in vmw_stdu_destroy_st() argument
368 if (unlikely(!stdu->defined)) in vmw_stdu_destroy_st()
381 cmd->body.stid = stdu->base.unit; in vmw_stdu_destroy_st()
390 stdu->defined = false; in vmw_stdu_destroy_st()
412 struct vmw_screen_target_display_unit *stdu; in vmw_stdu_crtc_set_config() local
429 stdu = vmw_crtc_to_stdu(crtc); in vmw_stdu_crtc_set_config()
441 set->connectors[0] != &stdu->base.connector) { in vmw_stdu_crtc_set_config()
443 set->connectors[0], &stdu->base.connector); in vmw_stdu_crtc_set_config()
449 connector = &stdu->base.connector; in vmw_stdu_crtc_set_config()
450 encoder = &stdu->base.encoder; in vmw_stdu_crtc_set_config()
457 if (stdu->defined) { in vmw_stdu_crtc_set_config()
459 ret = vmw_stdu_bind_st(dev_priv, stdu, NULL); in vmw_stdu_crtc_set_config()
465 vmw_stdu_update_st(dev_priv, stdu); in vmw_stdu_crtc_set_config()
475 vmw_stdu_unpin_display(stdu); in vmw_stdu_crtc_set_config()
476 stdu->content_fb = NULL; in vmw_stdu_crtc_set_config()
477 stdu->content_fb_type = SAME_AS_DISPLAY; in vmw_stdu_crtc_set_config()
479 ret = vmw_stdu_destroy_st(dev_priv, stdu); in vmw_stdu_crtc_set_config()
497 stdu->content_fb = new_fb; in vmw_stdu_crtc_set_config()
498 vfb = vmw_framebuffer_to_vfb(stdu->content_fb); in vmw_stdu_crtc_set_config()
501 stdu->content_fb_type = SEPARATE_DMA; in vmw_stdu_crtc_set_config()
510 stdu->content_fb_type != SAME_AS_DISPLAY) { in vmw_stdu_crtc_set_config()
524 if (stdu->content_fb_type == SEPARATE_DMA) { in vmw_stdu_crtc_set_config()
550 stdu->content_fb_type = SEPARATE_SURFACE; in vmw_stdu_crtc_set_config()
572 stdu->display_srf = display_srf; in vmw_stdu_crtc_set_config()
575 stdu->display_srf = new_vfbs->surface; in vmw_stdu_crtc_set_config()
579 ret = vmw_stdu_pin_display(stdu); in vmw_stdu_crtc_set_config()
581 stdu->display_srf = NULL; in vmw_stdu_crtc_set_config()
595 ret = vmw_stdu_define_st(dev_priv, stdu); in vmw_stdu_crtc_set_config()
599 ret = vmw_stdu_bind_st(dev_priv, stdu, &stdu->display_srf->res); in vmw_stdu_crtc_set_config()
614 vmw_stdu_destroy_st(dev_priv, stdu); in vmw_stdu_crtc_set_config()
616 vmw_stdu_unpin_display(stdu); in vmw_stdu_crtc_set_config()
618 stdu->content_fb = NULL; in vmw_stdu_crtc_set_config()
650 struct vmw_screen_target_display_unit *stdu; in vmw_stdu_crtc_page_flip() local
657 stdu = vmw_crtc_to_stdu(crtc); in vmw_stdu_crtc_page_flip()
659 stdu->content_fb = new_fb; in vmw_stdu_crtc_page_flip()
661 if (stdu->display_srf) { in vmw_stdu_crtc_page_flip()
666 if (stdu->content_fb_type == SAME_AS_DISPLAY) { in vmw_stdu_crtc_page_flip()
667 if (stdu->defined) { in vmw_stdu_crtc_page_flip()
669 ret = vmw_stdu_bind_st(dev_priv, stdu, NULL); in vmw_stdu_crtc_page_flip()
673 vmw_stdu_unpin_display(stdu); in vmw_stdu_crtc_page_flip()
674 stdu->display_srf = NULL; in vmw_stdu_crtc_page_flip()
681 (void) vmw_stdu_update_st(dev_priv, stdu); in vmw_stdu_crtc_page_flip()
687 if (stdu->content_fb_type == SAME_AS_DISPLAY) { in vmw_stdu_crtc_page_flip()
688 stdu->display_srf = vmw_framebuffer_to_vfbs(new_fb)->surface; in vmw_stdu_crtc_page_flip()
689 ret = vmw_stdu_pin_display(stdu); in vmw_stdu_crtc_page_flip()
691 stdu->display_srf = NULL; in vmw_stdu_crtc_page_flip()
696 ret = vmw_stdu_bind_st(dev_priv, stdu, &stdu->display_srf->res); in vmw_stdu_crtc_page_flip()
702 ret = vmw_stdu_update_st(dev_priv, stdu); in vmw_stdu_crtc_page_flip()
727 vmw_stdu_unpin_display(stdu); in vmw_stdu_crtc_page_flip()
730 stdu->content_fb = NULL; in vmw_stdu_crtc_page_flip()
782 struct vmw_screen_target_display_unit *stdu = in vmw_stdu_dmabuf_fifo_commit() local
783 container_of(dirty->unit, typeof(*stdu), base); in vmw_stdu_dmabuf_fifo_commit()
799 cmd->body.host.sid = stdu->display_srf->res.id; in vmw_stdu_dmabuf_fifo_commit()
809 vmw_stdu_populate_update(&suffix[1], stdu->base.unit, in vmw_stdu_dmabuf_fifo_commit()
899 struct vmw_screen_target_display_unit *stdu = in vmw_kms_stdu_surface_clip() local
900 container_of(dirty->unit, typeof(*stdu), base); in vmw_kms_stdu_surface_clip()
902 if (sdirty->sid != stdu->display_srf->res.id) { in vmw_kms_stdu_surface_clip()
937 struct vmw_screen_target_display_unit *stdu = in vmw_kms_stdu_surface_fifo_commit() local
938 container_of(dirty->unit, typeof(*stdu), base); in vmw_kms_stdu_surface_fifo_commit()
949 if (sdirty->sid != stdu->display_srf->res.id) { in vmw_kms_stdu_surface_fifo_commit()
955 cmd->body.dest.sid = stdu->display_srf->res.id; in vmw_kms_stdu_surface_fifo_commit()
963 vmw_stdu_populate_update(update, stdu->base.unit, sdirty->left, in vmw_kms_stdu_surface_fifo_commit()
1126 struct vmw_screen_target_display_unit *stdu; in vmw_stdu_init() local
1133 stdu = kzalloc(sizeof(*stdu), GFP_KERNEL); in vmw_stdu_init()
1134 if (!stdu) in vmw_stdu_init()
1137 stdu->base.unit = unit; in vmw_stdu_init()
1138 crtc = &stdu->base.crtc; in vmw_stdu_init()
1139 encoder = &stdu->base.encoder; in vmw_stdu_init()
1140 connector = &stdu->base.connector; in vmw_stdu_init()
1142 stdu->base.pref_active = (unit == 0); in vmw_stdu_init()
1143 stdu->base.pref_width = dev_priv->initial_width; in vmw_stdu_init()
1144 stdu->base.pref_height = dev_priv->initial_height; in vmw_stdu_init()
1145 stdu->base.is_implicit = true; in vmw_stdu_init()
1179 static void vmw_stdu_destroy(struct vmw_screen_target_display_unit *stdu) in vmw_stdu_destroy() argument
1181 vmw_stdu_unpin_display(stdu); in vmw_stdu_destroy()
1183 vmw_du_cleanup(&stdu->base); in vmw_stdu_destroy()
1184 kfree(stdu); in vmw_stdu_destroy()