Lines Matching refs:sw_context

124 					struct vmw_sw_context *sw_context,
127 struct vmw_sw_context *sw_context,
130 static int vmw_bo_to_validate_list(struct vmw_sw_context *sw_context,
154 static void vmw_resources_unreserve(struct vmw_sw_context *sw_context, in vmw_resources_unreserve() argument
158 struct list_head *list = &sw_context->resource_list; in vmw_resources_unreserve()
160 if (sw_context->dx_query_mob && !backoff) in vmw_resources_unreserve()
161 vmw_context_bind_dx_query(sw_context->dx_query_ctx, in vmw_resources_unreserve()
162 sw_context->dx_query_mob); in vmw_resources_unreserve()
180 if (val->staged_bindings != sw_context->staged_bindings) in vmw_resources_unreserve()
183 sw_context->staged_bindings_inuse = false; in vmw_resources_unreserve()
201 struct vmw_sw_context *sw_context, in vmw_cmd_ctx_first_setup() argument
206 ret = vmw_resource_context_res_add(dev_priv, sw_context, node->res); in vmw_cmd_ctx_first_setup()
210 if (!sw_context->staged_bindings) { in vmw_cmd_ctx_first_setup()
211 sw_context->staged_bindings = in vmw_cmd_ctx_first_setup()
213 if (IS_ERR(sw_context->staged_bindings)) { in vmw_cmd_ctx_first_setup()
216 ret = PTR_ERR(sw_context->staged_bindings); in vmw_cmd_ctx_first_setup()
217 sw_context->staged_bindings = NULL; in vmw_cmd_ctx_first_setup()
222 if (sw_context->staged_bindings_inuse) { in vmw_cmd_ctx_first_setup()
232 node->staged_bindings = sw_context->staged_bindings; in vmw_cmd_ctx_first_setup()
233 sw_context->staged_bindings_inuse = true; in vmw_cmd_ctx_first_setup()
250 static int vmw_resource_val_add(struct vmw_sw_context *sw_context, in vmw_resource_val_add() argument
259 if (likely(drm_ht_find_item(&sw_context->res_ht, (unsigned long) res, in vmw_resource_val_add()
276 ret = drm_ht_insert_item(&sw_context->res_ht, &node->hash); in vmw_resource_val_add()
289 list_add_tail(&node->head, &sw_context->resource_list); in vmw_resource_val_add()
296 list_add(&node->head, &sw_context->ctx_resource_list); in vmw_resource_val_add()
297 ret = vmw_cmd_ctx_first_setup(dev_priv, sw_context, node); in vmw_resource_val_add()
300 list_add_tail(&node->head, &sw_context->ctx_resource_list); in vmw_resource_val_add()
303 list_add_tail(&node->head, &sw_context->resource_list); in vmw_resource_val_add()
319 static int vmw_view_res_val_add(struct vmw_sw_context *sw_context, in vmw_view_res_val_add() argument
328 ret = vmw_resource_val_add(sw_context, vmw_view_srf(view), NULL); in vmw_view_res_val_add()
332 return vmw_resource_val_add(sw_context, view, NULL); in vmw_view_res_val_add()
347 static int vmw_view_id_val_add(struct vmw_sw_context *sw_context, in vmw_view_id_val_add() argument
350 struct vmw_resource_val_node *ctx_node = sw_context->dx_ctx_node; in vmw_view_id_val_add()
359 view = vmw_view_lookup(sw_context->man, view_type, id); in vmw_view_id_val_add()
363 ret = vmw_view_res_val_add(sw_context, view); in vmw_view_id_val_add()
381 struct vmw_sw_context *sw_context, in vmw_resource_context_res_add() argument
397 ret = vmw_resource_val_add(sw_context, res, NULL); in vmw_resource_context_res_add()
416 ret = vmw_view_res_val_add(sw_context, entry->res); in vmw_resource_context_res_add()
418 ret = vmw_resource_val_add(sw_context, entry->res, in vmw_resource_context_res_add()
430 ret = vmw_bo_to_validate_list(sw_context, in vmw_resource_context_res_add()
521 struct vmw_sw_context *sw_context, in vmw_cmd_invalid() argument
528 struct vmw_sw_context *sw_context, in vmw_cmd_ok() argument
546 static int vmw_bo_to_validate_list(struct vmw_sw_context *sw_context, in vmw_bo_to_validate_list() argument
557 if (likely(drm_ht_find_item(&sw_context->res_ht, (unsigned long) vbo, in vmw_bo_to_validate_list()
566 val_node = vval_buf - sw_context->val_bufs; in vmw_bo_to_validate_list()
568 val_node = sw_context->cur_val_buf; in vmw_bo_to_validate_list()
574 vval_buf = &sw_context->val_bufs[val_node]; in vmw_bo_to_validate_list()
576 ret = drm_ht_insert_item(&sw_context->res_ht, &vval_buf->hash); in vmw_bo_to_validate_list()
582 ++sw_context->cur_val_buf; in vmw_bo_to_validate_list()
586 list_add_tail(&val_buf->head, &sw_context->validate_nodes); in vmw_bo_to_validate_list()
606 static int vmw_resources_reserve(struct vmw_sw_context *sw_context) in vmw_resources_reserve() argument
611 list_for_each_entry(val, &sw_context->resource_list, head) { in vmw_resources_reserve()
622 (sw_context, vbo, in vmw_resources_reserve()
630 if (sw_context->dx_query_mob) { in vmw_resources_reserve()
634 vmw_context_get_dx_query_mob(sw_context->dx_query_ctx); in vmw_resources_reserve()
636 expected_dx_query_mob != sw_context->dx_query_mob) { in vmw_resources_reserve()
653 static int vmw_resources_validate(struct vmw_sw_context *sw_context) in vmw_resources_validate() argument
658 list_for_each_entry(val, &sw_context->resource_list, head) { in vmw_resources_validate()
674 (sw_context, vbo, in vmw_resources_validate()
697 struct vmw_sw_context *sw_context, in vmw_cmd_res_reloc_add() argument
706 ret = vmw_resource_relocation_add(&sw_context->res_relocations, in vmw_cmd_res_reloc_add()
708 vmw_ptr_diff(sw_context->buf_start, in vmw_cmd_res_reloc_add()
714 ret = vmw_resource_val_add(sw_context, res, &node); in vmw_cmd_res_reloc_add()
740 struct vmw_sw_context *sw_context, in vmw_cmd_res_check() argument
747 &sw_context->res_cache[res_type]; in vmw_cmd_res_check()
775 (&sw_context->res_relocations, res, in vmw_cmd_res_check()
776 vmw_ptr_diff(sw_context->buf_start, id_loc), in vmw_cmd_res_check()
781 sw_context->fp->tfile, in vmw_cmd_res_check()
796 ret = vmw_cmd_res_reloc_add(dev_priv, sw_context, id_loc, in vmw_cmd_res_check()
808 BUG_ON(sw_context->error_resource != NULL); in vmw_cmd_res_check()
809 sw_context->error_resource = res; in vmw_cmd_res_check()
862 static int vmw_rebind_contexts(struct vmw_sw_context *sw_context) in vmw_rebind_contexts() argument
867 list_for_each_entry(val, &sw_context->resource_list, head) { in vmw_rebind_contexts()
899 static int vmw_view_bindings_add(struct vmw_sw_context *sw_context, in vmw_view_bindings_add() argument
906 struct vmw_resource_val_node *ctx_node = sw_context->dx_ctx_node; in vmw_view_bindings_add()
916 man = sw_context->man; in vmw_view_bindings_add()
928 ret = vmw_view_res_val_add(sw_context, view); in vmw_view_bindings_add()
961 struct vmw_sw_context *sw_context, in vmw_cmd_cid_check() argument
970 return vmw_cmd_res_check(dev_priv, sw_context, vmw_res_context, in vmw_cmd_cid_check()
975 struct vmw_sw_context *sw_context, in vmw_cmd_set_render_target_check() argument
994 ret = vmw_cmd_res_check(dev_priv, sw_context, vmw_res_context, in vmw_cmd_set_render_target_check()
1000 ret = vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_set_render_target_check()
1021 struct vmw_sw_context *sw_context, in vmw_cmd_surface_copy_check() argument
1032 ret = vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_surface_copy_check()
1038 return vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_surface_copy_check()
1044 struct vmw_sw_context *sw_context, in vmw_cmd_buffer_copy_check() argument
1054 ret = vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_buffer_copy_check()
1060 return vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_buffer_copy_check()
1066 struct vmw_sw_context *sw_context, in vmw_cmd_pred_copy_check() argument
1076 ret = vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_pred_copy_check()
1082 return vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_pred_copy_check()
1088 struct vmw_sw_context *sw_context, in vmw_cmd_stretch_blt_check() argument
1098 ret = vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_stretch_blt_check()
1103 return vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_stretch_blt_check()
1109 struct vmw_sw_context *sw_context, in vmw_cmd_blt_surf_screen_check() argument
1119 return vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_blt_surf_screen_check()
1125 struct vmw_sw_context *sw_context, in vmw_cmd_present_check() argument
1136 return vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_present_check()
1156 struct vmw_sw_context *sw_context) in vmw_query_bo_switch_prepare() argument
1159 &sw_context->res_cache[vmw_res_context]; in vmw_query_bo_switch_prepare()
1163 sw_context->last_query_ctx = ctx_entry->res; in vmw_query_bo_switch_prepare()
1165 if (unlikely(new_query_bo != sw_context->cur_query_bo)) { in vmw_query_bo_switch_prepare()
1172 if (unlikely(sw_context->cur_query_bo != NULL)) { in vmw_query_bo_switch_prepare()
1173 sw_context->needs_post_query_barrier = true; in vmw_query_bo_switch_prepare()
1174 ret = vmw_bo_to_validate_list(sw_context, in vmw_query_bo_switch_prepare()
1175 sw_context->cur_query_bo, in vmw_query_bo_switch_prepare()
1180 sw_context->cur_query_bo = new_query_bo; in vmw_query_bo_switch_prepare()
1182 ret = vmw_bo_to_validate_list(sw_context, in vmw_query_bo_switch_prepare()
1212 struct vmw_sw_context *sw_context) in vmw_query_bo_switch_commit() argument
1219 if (sw_context->needs_post_query_barrier) { in vmw_query_bo_switch_commit()
1221 &sw_context->res_cache[vmw_res_context]; in vmw_query_bo_switch_commit()
1234 if (dev_priv->pinned_bo != sw_context->cur_query_bo) { in vmw_query_bo_switch_commit()
1240 if (!sw_context->needs_post_query_barrier) { in vmw_query_bo_switch_commit()
1241 vmw_bo_pin_reserved(sw_context->cur_query_bo, true); in vmw_query_bo_switch_commit()
1255 BUG_ON(sw_context->last_query_ctx == NULL); in vmw_query_bo_switch_commit()
1256 dev_priv->query_cid = sw_context->last_query_ctx->id; in vmw_query_bo_switch_commit()
1259 vmw_bo_reference(sw_context->cur_query_bo); in vmw_query_bo_switch_commit()
1283 struct vmw_sw_context *sw_context, in vmw_translate_mob_ptr() argument
1292 ret = vmw_user_bo_lookup(sw_context->fp->tfile, handle, &vmw_bo, NULL); in vmw_translate_mob_ptr()
1299 if (unlikely(sw_context->cur_reloc >= VMWGFX_MAX_RELOCATIONS)) { in vmw_translate_mob_ptr()
1306 reloc = &sw_context->relocs[sw_context->cur_reloc++]; in vmw_translate_mob_ptr()
1310 ret = vmw_bo_to_validate_list(sw_context, vmw_bo, true, &reloc->index); in vmw_translate_mob_ptr()
1343 struct vmw_sw_context *sw_context, in vmw_translate_guest_ptr() argument
1352 ret = vmw_user_bo_lookup(sw_context->fp->tfile, handle, &vmw_bo, NULL); in vmw_translate_guest_ptr()
1359 if (unlikely(sw_context->cur_reloc >= VMWGFX_MAX_RELOCATIONS)) { in vmw_translate_guest_ptr()
1366 reloc = &sw_context->relocs[sw_context->cur_reloc++]; in vmw_translate_guest_ptr()
1369 ret = vmw_bo_to_validate_list(sw_context, vmw_bo, false, &reloc->index); in vmw_translate_guest_ptr()
1394 struct vmw_sw_context *sw_context, in vmw_cmd_dx_define_query() argument
1403 struct vmw_resource_val_node *ctx_node = sw_context->dx_ctx_node; in vmw_cmd_dx_define_query()
1440 struct vmw_sw_context *sw_context, in vmw_cmd_dx_bind_query() argument
1458 ret = vmw_translate_mob_ptr(dev_priv, sw_context, &cmd->q.mobid, in vmw_cmd_dx_bind_query()
1464 sw_context->dx_query_mob = vmw_bo; in vmw_cmd_dx_bind_query()
1465 sw_context->dx_query_ctx = sw_context->dx_ctx_node->res; in vmw_cmd_dx_bind_query()
1482 struct vmw_sw_context *sw_context, in vmw_cmd_begin_gb_query() argument
1493 return vmw_cmd_res_check(dev_priv, sw_context, vmw_res_context, in vmw_cmd_begin_gb_query()
1506 struct vmw_sw_context *sw_context, in vmw_cmd_begin_query() argument
1531 return vmw_cmd_begin_gb_query(dev_priv, sw_context, header); in vmw_cmd_begin_query()
1534 return vmw_cmd_res_check(dev_priv, sw_context, vmw_res_context, in vmw_cmd_begin_query()
1547 struct vmw_sw_context *sw_context, in vmw_cmd_end_gb_query() argument
1558 ret = vmw_cmd_cid_check(dev_priv, sw_context, header); in vmw_cmd_end_gb_query()
1562 ret = vmw_translate_mob_ptr(dev_priv, sw_context, in vmw_cmd_end_gb_query()
1568 ret = vmw_query_bo_switch_prepare(dev_priv, vmw_bo, sw_context); in vmw_cmd_end_gb_query()
1582 struct vmw_sw_context *sw_context, in vmw_cmd_end_query() argument
1609 return vmw_cmd_end_gb_query(dev_priv, sw_context, header); in vmw_cmd_end_query()
1612 ret = vmw_cmd_cid_check(dev_priv, sw_context, header); in vmw_cmd_end_query()
1616 ret = vmw_translate_guest_ptr(dev_priv, sw_context, in vmw_cmd_end_query()
1622 ret = vmw_query_bo_switch_prepare(dev_priv, vmw_bo, sw_context); in vmw_cmd_end_query()
1636 struct vmw_sw_context *sw_context, in vmw_cmd_wait_gb_query() argument
1647 ret = vmw_cmd_cid_check(dev_priv, sw_context, header); in vmw_cmd_wait_gb_query()
1651 ret = vmw_translate_mob_ptr(dev_priv, sw_context, in vmw_cmd_wait_gb_query()
1669 struct vmw_sw_context *sw_context, in vmw_cmd_wait_query() argument
1696 return vmw_cmd_wait_gb_query(dev_priv, sw_context, header); in vmw_cmd_wait_query()
1699 ret = vmw_cmd_cid_check(dev_priv, sw_context, header); in vmw_cmd_wait_query()
1703 ret = vmw_translate_guest_ptr(dev_priv, sw_context, in vmw_cmd_wait_query()
1714 struct vmw_sw_context *sw_context, in vmw_cmd_dma() argument
1737 ret = vmw_translate_guest_ptr(dev_priv, sw_context, in vmw_cmd_dma()
1754 ret = vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_dma()
1763 srf = vmw_res_to_srf(sw_context->res_cache[vmw_res_surface].res); in vmw_cmd_dma()
1765 vmw_kms_cursor_snoop(srf, sw_context->fp->tfile, &vmw_bo->base, in vmw_cmd_dma()
1774 struct vmw_sw_context *sw_context, in vmw_cmd_draw() argument
1788 ret = vmw_cmd_cid_check(dev_priv, sw_context, header); in vmw_cmd_draw()
1801 ret = vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_draw()
1817 ret = vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_draw()
1828 struct vmw_sw_context *sw_context, in vmw_cmd_tex_state() argument
1847 ret = vmw_cmd_res_check(dev_priv, sw_context, vmw_res_context, in vmw_cmd_tex_state()
1863 ret = vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_tex_state()
1885 struct vmw_sw_context *sw_context, in vmw_cmd_check_define_gmrfb() argument
1896 ret = vmw_translate_guest_ptr(dev_priv, sw_context, in vmw_cmd_check_define_gmrfb()
1924 struct vmw_sw_context *sw_context, in vmw_cmd_res_switch_backup() argument
1932 ret = vmw_translate_mob_ptr(dev_priv, sw_context, buf_id, &dma_buf); in vmw_cmd_res_switch_backup()
1965 struct vmw_sw_context *sw_context, in vmw_cmd_switch_backup() argument
1976 ret = vmw_cmd_res_check(dev_priv, sw_context, res_type, in vmw_cmd_switch_backup()
1981 return vmw_cmd_res_switch_backup(dev_priv, sw_context, val_node, in vmw_cmd_switch_backup()
1994 struct vmw_sw_context *sw_context, in vmw_cmd_bind_gb_surface() argument
2004 return vmw_cmd_switch_backup(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_bind_gb_surface()
2019 struct vmw_sw_context *sw_context, in vmw_cmd_update_gb_image() argument
2029 return vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_update_gb_image()
2043 struct vmw_sw_context *sw_context, in vmw_cmd_update_gb_surface() argument
2053 return vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_update_gb_surface()
2067 struct vmw_sw_context *sw_context, in vmw_cmd_readback_gb_image() argument
2077 return vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_readback_gb_image()
2091 struct vmw_sw_context *sw_context, in vmw_cmd_readback_gb_surface() argument
2101 return vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_readback_gb_surface()
2115 struct vmw_sw_context *sw_context, in vmw_cmd_invalidate_gb_image() argument
2125 return vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_invalidate_gb_image()
2139 struct vmw_sw_context *sw_context, in vmw_cmd_invalidate_gb_surface() argument
2149 return vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_invalidate_gb_surface()
2164 struct vmw_sw_context *sw_context, in vmw_cmd_shader_define() argument
2178 ret = vmw_cmd_res_check(dev_priv, sw_context, vmw_res_context, in vmw_cmd_shader_define()
2192 &sw_context->staged_cmd_res); in vmw_cmd_shader_define()
2196 return vmw_resource_relocation_add(&sw_context->res_relocations, in vmw_cmd_shader_define()
2198 vmw_ptr_diff(sw_context->buf_start, in vmw_cmd_shader_define()
2212 struct vmw_sw_context *sw_context, in vmw_cmd_shader_destroy() argument
2225 ret = vmw_cmd_res_check(dev_priv, sw_context, vmw_res_context, in vmw_cmd_shader_destroy()
2237 &sw_context->staged_cmd_res); in vmw_cmd_shader_destroy()
2241 return vmw_resource_relocation_add(&sw_context->res_relocations, in vmw_cmd_shader_destroy()
2243 vmw_ptr_diff(sw_context->buf_start, in vmw_cmd_shader_destroy()
2257 struct vmw_sw_context *sw_context, in vmw_cmd_set_shader() argument
2278 ret = vmw_cmd_res_check(dev_priv, sw_context, vmw_res_context, in vmw_cmd_set_shader()
2293 ret = vmw_cmd_res_reloc_add(dev_priv, sw_context, in vmw_cmd_set_shader()
2303 ret = vmw_cmd_res_check(dev_priv, sw_context, in vmw_cmd_set_shader()
2329 struct vmw_sw_context *sw_context, in vmw_cmd_set_shader_const() argument
2341 ret = vmw_cmd_res_check(dev_priv, sw_context, vmw_res_context, in vmw_cmd_set_shader_const()
2362 struct vmw_sw_context *sw_context, in vmw_cmd_bind_gb_shader() argument
2373 return vmw_cmd_switch_backup(dev_priv, sw_context, vmw_res_shader, in vmw_cmd_bind_gb_shader()
2389 struct vmw_sw_context *sw_context, in vmw_cmd_dx_set_single_constant_buffer() argument
2397 struct vmw_resource_val_node *ctx_node = sw_context->dx_ctx_node; in vmw_cmd_dx_set_single_constant_buffer()
2407 ret = vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_dx_set_single_constant_buffer()
2444 struct vmw_sw_context *sw_context, in vmw_cmd_dx_set_shader_res() argument
2461 return vmw_view_bindings_add(sw_context, vmw_view_sr, in vmw_cmd_dx_set_shader_res()
2477 struct vmw_sw_context *sw_context, in vmw_cmd_dx_set_shader() argument
2485 struct vmw_resource_val_node *ctx_node = sw_context->dx_ctx_node; in vmw_cmd_dx_set_shader()
2503 res = vmw_shader_lookup(sw_context->man, cmd->body.shaderId, 0); in vmw_cmd_dx_set_shader()
2509 ret = vmw_resource_val_add(sw_context, res, NULL); in vmw_cmd_dx_set_shader()
2537 struct vmw_sw_context *sw_context, in vmw_cmd_dx_set_vertex_buffers() argument
2540 struct vmw_resource_val_node *ctx_node = sw_context->dx_ctx_node; in vmw_cmd_dx_set_vertex_buffers()
2565 ret = vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_dx_set_vertex_buffers()
2594 struct vmw_sw_context *sw_context, in vmw_cmd_dx_set_index_buffer() argument
2597 struct vmw_resource_val_node *ctx_node = sw_context->dx_ctx_node; in vmw_cmd_dx_set_index_buffer()
2612 ret = vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_dx_set_index_buffer()
2638 struct vmw_sw_context *sw_context, in vmw_cmd_dx_set_rendertargets() argument
2654 ret = vmw_view_bindings_add(sw_context, vmw_view_ds, in vmw_cmd_dx_set_rendertargets()
2660 return vmw_view_bindings_add(sw_context, vmw_view_rt, in vmw_cmd_dx_set_rendertargets()
2674 struct vmw_sw_context *sw_context, in vmw_cmd_dx_clear_rendertarget_view() argument
2682 return vmw_view_id_val_add(sw_context, vmw_view_rt, in vmw_cmd_dx_clear_rendertarget_view()
2695 struct vmw_sw_context *sw_context, in vmw_cmd_dx_clear_depthstencil_view() argument
2703 return vmw_view_id_val_add(sw_context, vmw_view_ds, in vmw_cmd_dx_clear_depthstencil_view()
2708 struct vmw_sw_context *sw_context, in vmw_cmd_dx_view_define() argument
2711 struct vmw_resource_val_node *ctx_node = sw_context->dx_ctx_node; in vmw_cmd_dx_view_define()
2735 ret = vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_dx_view_define()
2747 return vmw_view_add(sw_context->man, in vmw_cmd_dx_view_define()
2754 &sw_context->staged_cmd_res); in vmw_cmd_dx_view_define()
2766 struct vmw_sw_context *sw_context, in vmw_cmd_dx_set_so_targets() argument
2769 struct vmw_resource_val_node *ctx_node = sw_context->dx_ctx_node; in vmw_cmd_dx_set_so_targets()
2794 ret = vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_dx_set_so_targets()
2815 struct vmw_sw_context *sw_context, in vmw_cmd_dx_so_define() argument
2818 struct vmw_resource_val_node *ctx_node = sw_context->dx_ctx_node; in vmw_cmd_dx_so_define()
2854 struct vmw_sw_context *sw_context, in vmw_cmd_dx_check_subresource() argument
2876 return vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_dx_check_subresource()
2882 struct vmw_sw_context *sw_context, in vmw_cmd_dx_cid_check() argument
2885 struct vmw_resource_val_node *ctx_node = sw_context->dx_ctx_node; in vmw_cmd_dx_cid_check()
2907 struct vmw_sw_context *sw_context, in vmw_cmd_dx_view_remove() argument
2910 struct vmw_resource_val_node *ctx_node = sw_context->dx_ctx_node; in vmw_cmd_dx_view_remove()
2924 ret = vmw_view_remove(sw_context->man, in vmw_cmd_dx_view_remove()
2926 &sw_context->staged_cmd_res, in vmw_cmd_dx_view_remove()
2937 return vmw_resource_relocation_add(&sw_context->res_relocations, in vmw_cmd_dx_view_remove()
2939 vmw_ptr_diff(sw_context->buf_start, in vmw_cmd_dx_view_remove()
2953 struct vmw_sw_context *sw_context, in vmw_cmd_dx_define_shader() argument
2956 struct vmw_resource_val_node *ctx_node = sw_context->dx_ctx_node; in vmw_cmd_dx_define_shader()
2975 return vmw_dx_shader_add(sw_context->man, ctx_node->res, in vmw_cmd_dx_define_shader()
2977 &sw_context->staged_cmd_res); in vmw_cmd_dx_define_shader()
2989 struct vmw_sw_context *sw_context, in vmw_cmd_dx_destroy_shader() argument
2992 struct vmw_resource_val_node *ctx_node = sw_context->dx_ctx_node; in vmw_cmd_dx_destroy_shader()
3004 ret = vmw_shader_remove(sw_context->man, cmd->body.shaderId, 0, in vmw_cmd_dx_destroy_shader()
3005 &sw_context->staged_cmd_res); in vmw_cmd_dx_destroy_shader()
3021 struct vmw_sw_context *sw_context, in vmw_cmd_dx_bind_shader() argument
3034 ret = vmw_cmd_res_check(dev_priv, sw_context, vmw_res_context, in vmw_cmd_dx_bind_shader()
3040 ctx_node = sw_context->dx_ctx_node; in vmw_cmd_dx_bind_shader()
3054 ret = vmw_resource_val_add(sw_context, res, &res_node); in vmw_cmd_dx_bind_shader()
3061 ret = vmw_cmd_res_switch_backup(dev_priv, sw_context, res_node, in vmw_cmd_dx_bind_shader()
3078 struct vmw_sw_context *sw_context, in vmw_cmd_dx_genmips() argument
3086 return vmw_view_id_val_add(sw_context, vmw_view_sr, in vmw_cmd_dx_genmips()
3099 struct vmw_sw_context *sw_context, in vmw_cmd_dx_transfer_from_buffer() argument
3108 ret = vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_dx_transfer_from_buffer()
3114 return vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_dx_transfer_from_buffer()
3128 struct vmw_sw_context *sw_context, in vmw_cmd_intra_surface_copy() argument
3139 return vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_intra_surface_copy()
3146 struct vmw_sw_context *sw_context, in vmw_cmd_check_not_3d() argument
3177 if (unlikely(!sw_context->kernel)) { in vmw_cmd_check_not_3d()
3183 return vmw_cmd_check_define_gmrfb(dev_priv, sw_context, buf); in vmw_cmd_check_not_3d()
3550 struct vmw_sw_context *sw_context, in vmw_cmd_check() argument
3563 return vmw_cmd_check_not_3d(dev_priv, sw_context, buf, size); in vmw_cmd_check()
3580 if (unlikely(!entry->user_allow && !sw_context->kernel)) in vmw_cmd_check()
3589 ret = entry->func(dev_priv, sw_context, header); in vmw_cmd_check()
3613 struct vmw_sw_context *sw_context, in vmw_cmd_check_all() argument
3620 sw_context->buf_start = buf; in vmw_cmd_check_all()
3624 ret = vmw_cmd_check(dev_priv, sw_context, buf, &size); in vmw_cmd_check_all()
3639 static void vmw_free_relocations(struct vmw_sw_context *sw_context) in vmw_free_relocations() argument
3641 sw_context->cur_reloc = 0; in vmw_free_relocations()
3644 static void vmw_apply_relocations(struct vmw_sw_context *sw_context) in vmw_apply_relocations() argument
3651 for (i = 0; i < sw_context->cur_reloc; ++i) { in vmw_apply_relocations()
3652 reloc = &sw_context->relocs[i]; in vmw_apply_relocations()
3653 validate = &sw_context->val_bufs[reloc->index].base; in vmw_apply_relocations()
3670 vmw_free_relocations(sw_context); in vmw_apply_relocations()
3679 static void vmw_resource_list_unreference(struct vmw_sw_context *sw_context, in vmw_resource_list_unreference() argument
3693 if (val->staged_bindings != sw_context->staged_bindings) in vmw_resource_list_unreference()
3696 sw_context->staged_bindings_inuse = false; in vmw_resource_list_unreference()
3704 static void vmw_clear_validations(struct vmw_sw_context *sw_context) in vmw_clear_validations() argument
3712 list_for_each_entry_safe(entry, next, &sw_context->validate_nodes, in vmw_clear_validations()
3716 (void) drm_ht_remove_item(&sw_context->res_ht, &entry->hash); in vmw_clear_validations()
3717 sw_context->cur_val_buf--; in vmw_clear_validations()
3719 BUG_ON(sw_context->cur_val_buf != 0); in vmw_clear_validations()
3721 list_for_each_entry(val, &sw_context->resource_list, head) in vmw_clear_validations()
3722 (void) drm_ht_remove_item(&sw_context->res_ht, &val->hash); in vmw_clear_validations()
3762 struct vmw_sw_context *sw_context) in vmw_validate_buffers() argument
3767 list_for_each_entry(entry, &sw_context->validate_nodes, base.head) { in vmw_validate_buffers()
3777 static int vmw_resize_cmd_bounce(struct vmw_sw_context *sw_context, in vmw_resize_cmd_bounce() argument
3780 if (likely(sw_context->cmd_bounce_size >= size)) in vmw_resize_cmd_bounce()
3783 if (sw_context->cmd_bounce_size == 0) in vmw_resize_cmd_bounce()
3784 sw_context->cmd_bounce_size = VMWGFX_CMD_BOUNCE_INIT_SIZE; in vmw_resize_cmd_bounce()
3786 while (sw_context->cmd_bounce_size < size) { in vmw_resize_cmd_bounce()
3787 sw_context->cmd_bounce_size = in vmw_resize_cmd_bounce()
3788 PAGE_ALIGN(sw_context->cmd_bounce_size + in vmw_resize_cmd_bounce()
3789 (sw_context->cmd_bounce_size >> 1)); in vmw_resize_cmd_bounce()
3792 vfree(sw_context->cmd_bounce); in vmw_resize_cmd_bounce()
3793 sw_context->cmd_bounce = vmalloc(sw_context->cmd_bounce_size); in vmw_resize_cmd_bounce()
3795 if (sw_context->cmd_bounce == NULL) { in vmw_resize_cmd_bounce()
3797 sw_context->cmd_bounce_size = 0; in vmw_resize_cmd_bounce()
3943 struct vmw_sw_context *sw_context) in vmw_execbuf_submit_fifo() argument
3947 if (sw_context->dx_ctx_node) in vmw_execbuf_submit_fifo()
3949 sw_context->dx_ctx_node->res->id); in vmw_execbuf_submit_fifo()
3957 vmw_apply_relocations(sw_context); in vmw_execbuf_submit_fifo()
3959 vmw_resource_relocations_apply(cmd, &sw_context->res_relocations); in vmw_execbuf_submit_fifo()
3960 vmw_resource_relocations_free(&sw_context->res_relocations); in vmw_execbuf_submit_fifo()
3981 struct vmw_sw_context *sw_context) in vmw_execbuf_submit_cmdbuf() argument
3983 u32 id = ((sw_context->dx_ctx_node) ? sw_context->dx_ctx_node->res->id : in vmw_execbuf_submit_cmdbuf()
3988 vmw_apply_relocations(sw_context); in vmw_execbuf_submit_cmdbuf()
3989 vmw_resource_relocations_apply(cmd, &sw_context->res_relocations); in vmw_execbuf_submit_cmdbuf()
3990 vmw_resource_relocations_free(&sw_context->res_relocations); in vmw_execbuf_submit_cmdbuf()
4057 struct vmw_sw_context *sw_context, in vmw_execbuf_tie_context() argument
4067 ret = vmw_user_resource_lookup_handle(dev_priv, sw_context->fp->tfile, in vmw_execbuf_tie_context()
4076 ret = vmw_resource_val_add(sw_context, res, &ctx_node); in vmw_execbuf_tie_context()
4080 sw_context->dx_ctx_node = ctx_node; in vmw_execbuf_tie_context()
4081 sw_context->man = vmw_context_res_man(res); in vmw_execbuf_tie_context()
4098 struct vmw_sw_context *sw_context = &dev_priv->ctx; in vmw_execbuf_process() local
4140 sw_context->kernel = false; in vmw_execbuf_process()
4142 ret = vmw_resize_cmd_bounce(sw_context, command_size); in vmw_execbuf_process()
4147 ret = copy_from_user(sw_context->cmd_bounce, in vmw_execbuf_process()
4155 kernel_commands = sw_context->cmd_bounce; in vmw_execbuf_process()
4157 sw_context->kernel = true; in vmw_execbuf_process()
4159 sw_context->fp = vmw_fpriv(file_priv); in vmw_execbuf_process()
4160 sw_context->cur_reloc = 0; in vmw_execbuf_process()
4161 sw_context->cur_val_buf = 0; in vmw_execbuf_process()
4162 INIT_LIST_HEAD(&sw_context->resource_list); in vmw_execbuf_process()
4163 INIT_LIST_HEAD(&sw_context->ctx_resource_list); in vmw_execbuf_process()
4164 sw_context->cur_query_bo = dev_priv->pinned_bo; in vmw_execbuf_process()
4165 sw_context->last_query_ctx = NULL; in vmw_execbuf_process()
4166 sw_context->needs_post_query_barrier = false; in vmw_execbuf_process()
4167 sw_context->dx_ctx_node = NULL; in vmw_execbuf_process()
4168 sw_context->dx_query_mob = NULL; in vmw_execbuf_process()
4169 sw_context->dx_query_ctx = NULL; in vmw_execbuf_process()
4170 memset(sw_context->res_cache, 0, sizeof(sw_context->res_cache)); in vmw_execbuf_process()
4171 INIT_LIST_HEAD(&sw_context->validate_nodes); in vmw_execbuf_process()
4172 INIT_LIST_HEAD(&sw_context->res_relocations); in vmw_execbuf_process()
4173 if (sw_context->staged_bindings) in vmw_execbuf_process()
4174 vmw_binding_state_reset(sw_context->staged_bindings); in vmw_execbuf_process()
4176 if (!sw_context->res_ht_initialized) { in vmw_execbuf_process()
4177 ret = drm_ht_create(&sw_context->res_ht, VMW_RES_HT_ORDER); in vmw_execbuf_process()
4180 sw_context->res_ht_initialized = true; in vmw_execbuf_process()
4182 INIT_LIST_HEAD(&sw_context->staged_cmd_res); in vmw_execbuf_process()
4184 ret = vmw_execbuf_tie_context(dev_priv, sw_context, dx_context_handle); in vmw_execbuf_process()
4186 list_splice_init(&sw_context->ctx_resource_list, in vmw_execbuf_process()
4187 &sw_context->resource_list); in vmw_execbuf_process()
4191 ret = vmw_cmd_check_all(dev_priv, sw_context, kernel_commands, in vmw_execbuf_process()
4198 list_splice_init(&sw_context->ctx_resource_list, in vmw_execbuf_process()
4199 &sw_context->resource_list); in vmw_execbuf_process()
4204 ret = vmw_resources_reserve(sw_context); in vmw_execbuf_process()
4208 ret = ttm_eu_reserve_buffers(&ticket, &sw_context->validate_nodes, in vmw_execbuf_process()
4213 ret = vmw_validate_buffers(dev_priv, sw_context); in vmw_execbuf_process()
4217 ret = vmw_resources_validate(sw_context); in vmw_execbuf_process()
4228 ret = vmw_rebind_contexts(sw_context); in vmw_execbuf_process()
4235 command_size, sw_context); in vmw_execbuf_process()
4238 sw_context); in vmw_execbuf_process()
4245 vmw_query_bo_switch_commit(dev_priv, sw_context); in vmw_execbuf_process()
4258 vmw_resources_unreserve(sw_context, false); in vmw_execbuf_process()
4260 ttm_eu_fence_buffer_objects(&ticket, &sw_context->validate_nodes, in vmw_execbuf_process()
4267 vmw_clear_validations(sw_context); in vmw_execbuf_process()
4303 list_splice_init(&sw_context->resource_list, &resource_list); in vmw_execbuf_process()
4304 vmw_cmdbuf_res_commit(&sw_context->staged_cmd_res); in vmw_execbuf_process()
4311 vmw_resource_list_unreference(sw_context, &resource_list); in vmw_execbuf_process()
4318 ttm_eu_backoff_reservation(&ticket, &sw_context->validate_nodes); in vmw_execbuf_process()
4320 vmw_resources_unreserve(sw_context, true); in vmw_execbuf_process()
4321 vmw_resource_relocations_free(&sw_context->res_relocations); in vmw_execbuf_process()
4322 vmw_free_relocations(sw_context); in vmw_execbuf_process()
4323 vmw_clear_validations(sw_context); in vmw_execbuf_process()
4328 list_splice_init(&sw_context->resource_list, &resource_list); in vmw_execbuf_process()
4329 error_resource = sw_context->error_resource; in vmw_execbuf_process()
4330 sw_context->error_resource = NULL; in vmw_execbuf_process()
4331 vmw_cmdbuf_res_revert(&sw_context->staged_cmd_res); in vmw_execbuf_process()
4338 vmw_resource_list_unreference(sw_context, &resource_list); in vmw_execbuf_process()