Lines Matching refs:sw_context
34 struct vmw_sw_context *sw_context,
41 struct vmw_sw_context *sw_context,
48 struct vmw_sw_context *sw_context,
58 if (likely(sw_context->cid_valid && cmd->cid == sw_context->last_cid))
61 ret = vmw_context_check(dev_priv, sw_context->tfile, cmd->cid);
68 sw_context->last_cid = cmd->cid;
69 sw_context->cid_valid = true;
75 struct vmw_sw_context *sw_context,
81 if (unlikely((!sw_context->sid_valid ||
82 *sid != sw_context->last_sid))) {
84 int ret = vmw_surface_check(dev_priv, sw_context->tfile,
95 sw_context->last_sid = *sid;
96 sw_context->sid_valid = true;
98 sw_context->sid_translation = real_id;
100 *sid = sw_context->sid_translation;
107 struct vmw_sw_context *sw_context,
116 ret = vmw_cmd_cid_check(dev_priv, sw_context, header);
121 ret = vmw_cmd_sid_check(dev_priv, sw_context, &cmd->body.target.sid);
126 struct vmw_sw_context *sw_context,
136 ret = vmw_cmd_sid_check(dev_priv, sw_context, &cmd->body.src.sid);
139 return vmw_cmd_sid_check(dev_priv, sw_context, &cmd->body.dest.sid);
143 struct vmw_sw_context *sw_context,
153 ret = vmw_cmd_sid_check(dev_priv, sw_context, &cmd->body.src.sid);
156 return vmw_cmd_sid_check(dev_priv, sw_context, &cmd->body.dest.sid);
160 struct vmw_sw_context *sw_context,
169 return vmw_cmd_sid_check(dev_priv, sw_context, &cmd->body.srcImage.sid);
173 struct vmw_sw_context *sw_context,
182 return vmw_cmd_sid_check(dev_priv, sw_context, &cmd->body.sid);
186 struct vmw_sw_context *sw_context,
198 ret = vmw_user_dmabuf_lookup(sw_context->tfile, handle, &vmw_bo);
205 if (unlikely(sw_context->cur_reloc >= VMWGFX_MAX_RELOCATIONS)) {
212 reloc = &sw_context->relocs[sw_context->cur_reloc++];
215 cur_validate_node = vmw_dmabuf_validate_node(bo, sw_context->cur_val_buf);
224 if (unlikely(cur_validate_node == sw_context->cur_val_buf)) {
225 val_buf = &sw_context->val_bufs[cur_validate_node];
228 list_add_tail(&val_buf->head, &sw_context->validate_nodes);
229 ++sw_context->cur_val_buf;
241 struct vmw_sw_context *sw_context,
252 ret = vmw_cmd_cid_check(dev_priv, sw_context, header);
256 ret = vmw_translate_guest_ptr(dev_priv, sw_context,
267 struct vmw_sw_context *sw_context,
278 ret = vmw_cmd_cid_check(dev_priv, sw_context, header);
282 ret = vmw_translate_guest_ptr(dev_priv, sw_context,
294 struct vmw_sw_context *sw_context,
307 ret = vmw_translate_guest_ptr(dev_priv, sw_context,
314 ret = vmw_user_surface_lookup_handle(dev_priv, sw_context->tfile,
326 vmw_kms_cursor_snoop(srf, sw_context->tfile, bo, header);
335 struct vmw_sw_context *sw_context,
349 ret = vmw_cmd_cid_check(dev_priv, sw_context, header);
362 ret = vmw_cmd_sid_check(dev_priv, sw_context,
377 ret = vmw_cmd_sid_check(dev_priv, sw_context,
387 struct vmw_sw_context *sw_context,
401 ret = vmw_cmd_cid_check(dev_priv, sw_context, header);
409 ret = vmw_cmd_sid_check(dev_priv, sw_context,
462 struct vmw_sw_context *sw_context,
486 ret = vmw_cmd_funcs[cmd_id](dev_priv, sw_context, header);
498 struct vmw_sw_context *sw_context,
506 ret = vmw_cmd_check(dev_priv, sw_context, buf, &size);
521 static void vmw_free_relocations(struct vmw_sw_context *sw_context)
523 sw_context->cur_reloc = 0;
526 static void vmw_apply_relocations(struct vmw_sw_context *sw_context)
533 for (i = 0; i < sw_context->cur_reloc; ++i) {
534 reloc = &sw_context->relocs[i];
535 validate = &sw_context->val_bufs[reloc->index];
540 vmw_free_relocations(sw_context);
543 static void vmw_clear_validations(struct vmw_sw_context *sw_context)
547 list_for_each_entry_safe(entry, next, &sw_context->validate_nodes,
552 sw_context->cur_val_buf--;
554 BUG_ON(sw_context->cur_val_buf != 0);
595 struct vmw_sw_context *sw_context)
600 list_for_each_entry(entry, &sw_context->validate_nodes, head) {
619 struct vmw_sw_context *sw_context = &dev_priv->ctx;
648 sw_context->tfile = vmw_fpriv(file_priv)->tfile;
649 sw_context->cid_valid = false;
650 sw_context->sid_valid = false;
651 sw_context->cur_reloc = 0;
652 sw_context->cur_val_buf = 0;
654 INIT_LIST_HEAD(&sw_context->validate_nodes);
656 ret = vmw_cmd_check_all(dev_priv, sw_context, cmd, arg->command_size);
659 ret = ttm_eu_reserve_buffers(&sw_context->validate_nodes,
664 ret = vmw_validate_buffers(dev_priv, sw_context);
668 vmw_apply_relocations(sw_context);
682 ttm_eu_fence_buffer_objects(&sw_context->validate_nodes,
684 vmw_clear_validations(sw_context);
712 vmw_free_relocations(sw_context);
713 ttm_eu_backoff_reservation(&sw_context->validate_nodes);
714 vmw_clear_validations(sw_context);