Lines Matching refs:dev_priv
129 static int vmw_resource_context_res_add(struct vmw_private *dev_priv,
132 static int vmw_translate_mob_ptr(struct vmw_private *dev_priv,
196 static int vmw_cmd_ctx_first_setup(struct vmw_private *dev_priv, in vmw_cmd_ctx_first_setup() argument
203 ret = vmw_resource_context_res_add(dev_priv, sw_context, res); in vmw_cmd_ctx_first_setup()
208 sw_context->staged_bindings = vmw_binding_state_alloc(dev_priv); in vmw_cmd_ctx_first_setup()
217 node->staged = vmw_binding_state_alloc(dev_priv); in vmw_cmd_ctx_first_setup()
250 static unsigned int vmw_execbuf_res_size(struct vmw_private *dev_priv, in vmw_execbuf_res_size() argument
254 (res_type == vmw_res_context && dev_priv->has_mob)) ? in vmw_execbuf_res_size()
297 struct vmw_private *dev_priv = res->dev_priv; in vmw_execbuf_res_val_add() local
320 priv_size = vmw_execbuf_res_size(dev_priv, res_type); in vmw_execbuf_res_val_add()
328 ret = vmw_cmd_ctx_first_setup(dev_priv, sw_context, res, in vmw_execbuf_res_val_add()
416 static int vmw_resource_context_res_add(struct vmw_private *dev_priv, in vmw_resource_context_res_add() argument
425 u32 cotable_max = has_sm5_context(ctx->dev_priv) ? in vmw_resource_context_res_add()
429 if (has_sm4_context(dev_priv) && in vmw_resource_context_res_add()
445 mutex_lock(&dev_priv->binding_mutex); in vmw_resource_context_res_add()
459 if (has_sm4_context(dev_priv) && in vmw_resource_context_res_add()
473 mutex_unlock(&dev_priv->binding_mutex); in vmw_resource_context_res_add()
553 static int vmw_cmd_invalid(struct vmw_private *dev_priv, in vmw_cmd_invalid() argument
560 static int vmw_cmd_ok(struct vmw_private *dev_priv, in vmw_cmd_ok() argument
614 vmw_cmd_res_check(struct vmw_private *dev_priv, in vmw_cmd_res_check() argument
644 unsigned int size = vmw_execbuf_res_size(dev_priv, res_type); in vmw_cmd_res_check()
651 (dev_priv, sw_context->fp->tfile, *id_loc, converter, &res); in vmw_cmd_res_check()
692 struct vmw_private *dev_priv = ctx_res->dev_priv; in vmw_rebind_all_dx_query() local
701 cmd = VMW_CMD_CTX_RESERVE(dev_priv, sizeof(*cmd), ctx_res->id); in vmw_rebind_all_dx_query()
709 vmw_cmd_commit(dev_priv, sizeof(*cmd)); in vmw_rebind_all_dx_query()
806 static int vmw_cmd_cid_check(struct vmw_private *dev_priv, in vmw_cmd_cid_check() argument
813 return vmw_cmd_res_check(dev_priv, sw_context, vmw_res_context, in vmw_cmd_cid_check()
846 static int vmw_cmd_set_render_target_check(struct vmw_private *dev_priv, in vmw_cmd_set_render_target_check() argument
863 ret = vmw_cmd_res_check(dev_priv, sw_context, vmw_res_context, in vmw_cmd_set_render_target_check()
869 ret = vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_set_render_target_check()
875 if (dev_priv->has_mob) { in vmw_cmd_set_render_target_check()
893 static int vmw_cmd_surface_copy_check(struct vmw_private *dev_priv, in vmw_cmd_surface_copy_check() argument
902 ret = vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_surface_copy_check()
908 return vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_surface_copy_check()
913 static int vmw_cmd_buffer_copy_check(struct vmw_private *dev_priv, in vmw_cmd_buffer_copy_check() argument
921 ret = vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_buffer_copy_check()
927 return vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_buffer_copy_check()
932 static int vmw_cmd_pred_copy_check(struct vmw_private *dev_priv, in vmw_cmd_pred_copy_check() argument
940 ret = vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_pred_copy_check()
946 return vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_pred_copy_check()
951 static int vmw_cmd_stretch_blt_check(struct vmw_private *dev_priv, in vmw_cmd_stretch_blt_check() argument
959 ret = vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_stretch_blt_check()
965 return vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_stretch_blt_check()
970 static int vmw_cmd_blt_surf_screen_check(struct vmw_private *dev_priv, in vmw_cmd_blt_surf_screen_check() argument
977 return vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_blt_surf_screen_check()
982 static int vmw_cmd_present_check(struct vmw_private *dev_priv, in vmw_cmd_present_check() argument
989 return vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_present_check()
1006 static int vmw_query_bo_switch_prepare(struct vmw_private *dev_priv, in vmw_query_bo_switch_prepare() argument
1034 vmw_bo_placement_set_default_accelerated(dev_priv->dummy_query_bo); in vmw_query_bo_switch_prepare()
1036 dev_priv->dummy_query_bo); in vmw_query_bo_switch_prepare()
1061 static void vmw_query_bo_switch_commit(struct vmw_private *dev_priv, in vmw_query_bo_switch_commit() argument
1077 ret = vmw_cmd_emit_dummy_query(dev_priv, ctx->id); in vmw_query_bo_switch_commit()
1083 if (dev_priv->pinned_bo != sw_context->cur_query_bo) { in vmw_query_bo_switch_commit()
1084 if (dev_priv->pinned_bo) { in vmw_query_bo_switch_commit()
1085 vmw_bo_pin_reserved(dev_priv->pinned_bo, false); in vmw_query_bo_switch_commit()
1086 vmw_bo_unreference(&dev_priv->pinned_bo); in vmw_query_bo_switch_commit()
1097 if (!dev_priv->dummy_query_bo_pinned) { in vmw_query_bo_switch_commit()
1098 vmw_bo_pin_reserved(dev_priv->dummy_query_bo, in vmw_query_bo_switch_commit()
1100 dev_priv->dummy_query_bo_pinned = true; in vmw_query_bo_switch_commit()
1104 dev_priv->query_cid = sw_context->last_query_ctx->id; in vmw_query_bo_switch_commit()
1105 dev_priv->query_cid_valid = true; in vmw_query_bo_switch_commit()
1106 dev_priv->pinned_bo = in vmw_query_bo_switch_commit()
1132 static int vmw_translate_mob_ptr(struct vmw_private *dev_priv, in vmw_translate_mob_ptr() argument
1145 drm_dbg(&dev_priv->drm, "Could not find or use MOB buffer.\n"); in vmw_translate_mob_ptr()
1188 static int vmw_translate_guest_ptr(struct vmw_private *dev_priv, in vmw_translate_guest_ptr() argument
1201 drm_dbg(&dev_priv->drm, "Could not find or use GMR region.\n"); in vmw_translate_guest_ptr()
1233 static int vmw_cmd_dx_define_query(struct vmw_private *dev_priv, in vmw_cmd_dx_define_query() argument
1270 static int vmw_cmd_dx_bind_query(struct vmw_private *dev_priv, in vmw_cmd_dx_bind_query() argument
1284 ret = vmw_translate_mob_ptr(dev_priv, sw_context, &cmd->body.mobid, in vmw_cmd_dx_bind_query()
1302 static int vmw_cmd_begin_gb_query(struct vmw_private *dev_priv, in vmw_cmd_begin_gb_query() argument
1309 return vmw_cmd_res_check(dev_priv, sw_context, vmw_res_context, in vmw_cmd_begin_gb_query()
1321 static int vmw_cmd_begin_query(struct vmw_private *dev_priv, in vmw_cmd_begin_query() argument
1328 if (unlikely(dev_priv->has_mob)) { in vmw_cmd_begin_query()
1339 return vmw_cmd_begin_gb_query(dev_priv, sw_context, header); in vmw_cmd_begin_query()
1342 return vmw_cmd_res_check(dev_priv, sw_context, vmw_res_context, in vmw_cmd_begin_query()
1354 static int vmw_cmd_end_gb_query(struct vmw_private *dev_priv, in vmw_cmd_end_gb_query() argument
1363 ret = vmw_cmd_cid_check(dev_priv, sw_context, header); in vmw_cmd_end_gb_query()
1367 ret = vmw_translate_mob_ptr(dev_priv, sw_context, &cmd->body.mobid, in vmw_cmd_end_gb_query()
1372 ret = vmw_query_bo_switch_prepare(dev_priv, vmw_bo, sw_context); in vmw_cmd_end_gb_query()
1384 static int vmw_cmd_end_query(struct vmw_private *dev_priv, in vmw_cmd_end_query() argument
1393 if (dev_priv->has_mob) { in vmw_cmd_end_query()
1406 return vmw_cmd_end_gb_query(dev_priv, sw_context, header); in vmw_cmd_end_query()
1409 ret = vmw_cmd_cid_check(dev_priv, sw_context, header); in vmw_cmd_end_query()
1413 ret = vmw_translate_guest_ptr(dev_priv, sw_context, in vmw_cmd_end_query()
1418 ret = vmw_query_bo_switch_prepare(dev_priv, vmw_bo, sw_context); in vmw_cmd_end_query()
1430 static int vmw_cmd_wait_gb_query(struct vmw_private *dev_priv, in vmw_cmd_wait_gb_query() argument
1439 ret = vmw_cmd_cid_check(dev_priv, sw_context, header); in vmw_cmd_wait_gb_query()
1443 ret = vmw_translate_mob_ptr(dev_priv, sw_context, &cmd->body.mobid, in vmw_cmd_wait_gb_query()
1458 static int vmw_cmd_wait_query(struct vmw_private *dev_priv, in vmw_cmd_wait_query() argument
1467 if (dev_priv->has_mob) { in vmw_cmd_wait_query()
1480 return vmw_cmd_wait_gb_query(dev_priv, sw_context, header); in vmw_cmd_wait_query()
1483 ret = vmw_cmd_cid_check(dev_priv, sw_context, header); in vmw_cmd_wait_query()
1487 ret = vmw_translate_guest_ptr(dev_priv, sw_context, in vmw_cmd_wait_query()
1495 static int vmw_cmd_dma(struct vmw_private *dev_priv, in vmw_cmd_dma() argument
1517 ret = vmw_translate_guest_ptr(dev_priv, sw_context, in vmw_cmd_dma()
1535 ret = vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_dma()
1551 static int vmw_cmd_draw(struct vmw_private *dev_priv, in vmw_cmd_draw() argument
1563 ret = vmw_cmd_cid_check(dev_priv, sw_context, header); in vmw_cmd_draw()
1576 ret = vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_draw()
1593 ret = vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_draw()
1603 static int vmw_cmd_tex_state(struct vmw_private *dev_priv, in vmw_cmd_tex_state() argument
1618 ret = vmw_cmd_res_check(dev_priv, sw_context, vmw_res_context, in vmw_cmd_tex_state()
1634 ret = vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_tex_state()
1641 if (dev_priv->has_mob) { in vmw_cmd_tex_state()
1661 static int vmw_cmd_check_define_gmrfb(struct vmw_private *dev_priv, in vmw_cmd_check_define_gmrfb() argument
1672 return vmw_translate_guest_ptr(dev_priv, sw_context, &cmd->body.ptr, in vmw_cmd_check_define_gmrfb()
1691 static int vmw_cmd_res_switch_backup(struct vmw_private *dev_priv, in vmw_cmd_res_switch_backup() argument
1704 ret = vmw_translate_mob_ptr(dev_priv, sw_context, buf_id, &vbo); in vmw_cmd_res_switch_backup()
1729 static int vmw_cmd_switch_backup(struct vmw_private *dev_priv, in vmw_cmd_switch_backup() argument
1739 ret = vmw_cmd_res_check(dev_priv, sw_context, res_type, in vmw_cmd_switch_backup()
1744 return vmw_cmd_res_switch_backup(dev_priv, sw_context, res, buf_id, in vmw_cmd_switch_backup()
1755 static int vmw_cmd_bind_gb_surface(struct vmw_private *dev_priv, in vmw_cmd_bind_gb_surface() argument
1762 return vmw_cmd_switch_backup(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_bind_gb_surface()
1774 static int vmw_cmd_update_gb_image(struct vmw_private *dev_priv, in vmw_cmd_update_gb_image() argument
1781 return vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_update_gb_image()
1793 static int vmw_cmd_update_gb_surface(struct vmw_private *dev_priv, in vmw_cmd_update_gb_surface() argument
1800 return vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_update_gb_surface()
1812 static int vmw_cmd_readback_gb_image(struct vmw_private *dev_priv, in vmw_cmd_readback_gb_image() argument
1819 return vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_readback_gb_image()
1832 static int vmw_cmd_readback_gb_surface(struct vmw_private *dev_priv, in vmw_cmd_readback_gb_surface() argument
1839 return vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_readback_gb_surface()
1852 static int vmw_cmd_invalidate_gb_image(struct vmw_private *dev_priv, in vmw_cmd_invalidate_gb_image() argument
1859 return vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_invalidate_gb_image()
1872 static int vmw_cmd_invalidate_gb_surface(struct vmw_private *dev_priv, in vmw_cmd_invalidate_gb_surface() argument
1879 return vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_invalidate_gb_surface()
1891 static int vmw_cmd_shader_define(struct vmw_private *dev_priv, in vmw_cmd_shader_define() argument
1902 ret = vmw_cmd_res_check(dev_priv, sw_context, vmw_res_context, in vmw_cmd_shader_define()
1908 if (unlikely(!dev_priv->has_mob)) in vmw_cmd_shader_define()
1912 ret = vmw_compat_shader_add(dev_priv, vmw_context_res_man(ctx), in vmw_cmd_shader_define()
1931 static int vmw_cmd_shader_destroy(struct vmw_private *dev_priv, in vmw_cmd_shader_destroy() argument
1941 ret = vmw_cmd_res_check(dev_priv, sw_context, vmw_res_context, in vmw_cmd_shader_destroy()
1947 if (unlikely(!dev_priv->has_mob)) in vmw_cmd_shader_destroy()
1968 static int vmw_cmd_set_shader(struct vmw_private *dev_priv, in vmw_cmd_set_shader() argument
1986 ret = vmw_cmd_res_check(dev_priv, sw_context, vmw_res_context, in vmw_cmd_set_shader()
1992 if (!dev_priv->has_mob) in vmw_cmd_set_shader()
2021 ret = vmw_cmd_res_check(dev_priv, sw_context, vmw_res_shader, in vmw_cmd_set_shader()
2049 static int vmw_cmd_set_shader_const(struct vmw_private *dev_priv, in vmw_cmd_set_shader_const() argument
2058 ret = vmw_cmd_res_check(dev_priv, sw_context, vmw_res_context, in vmw_cmd_set_shader_const()
2064 if (dev_priv->has_mob) in vmw_cmd_set_shader_const()
2077 static int vmw_cmd_bind_gb_shader(struct vmw_private *dev_priv, in vmw_cmd_bind_gb_shader() argument
2084 return vmw_cmd_switch_backup(dev_priv, sw_context, vmw_res_shader, in vmw_cmd_bind_gb_shader()
2098 vmw_cmd_dx_set_single_constant_buffer(struct vmw_private *dev_priv, in vmw_cmd_dx_set_single_constant_buffer() argument
2113 ret = vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_dx_set_single_constant_buffer()
2119 if (!vmw_shadertype_is_valid(dev_priv->sm_type, cmd->body.type) || in vmw_cmd_dx_set_single_constant_buffer()
2150 vmw_cmd_dx_set_constant_buffer_offset(struct vmw_private *dev_priv, in vmw_cmd_dx_set_constant_buffer_offset() argument
2159 if (!has_sm5_context(dev_priv)) in vmw_cmd_dx_set_constant_buffer_offset()
2187 static int vmw_cmd_dx_set_shader_res(struct vmw_private *dev_priv, in vmw_cmd_dx_set_shader_res() argument
2199 !vmw_shadertype_is_valid(dev_priv->sm_type, cmd->body.type)) { in vmw_cmd_dx_set_shader_res()
2218 static int vmw_cmd_dx_set_shader(struct vmw_private *dev_priv, in vmw_cmd_dx_set_shader() argument
2233 if (!vmw_shadertype_is_valid(dev_priv->sm_type, cmd->body.type)) { in vmw_cmd_dx_set_shader()
2271 static int vmw_cmd_dx_set_vertex_buffers(struct vmw_private *dev_priv, in vmw_cmd_dx_set_vertex_buffers() argument
2298 ret = vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_dx_set_vertex_buffers()
2326 static int vmw_cmd_dx_set_index_buffer(struct vmw_private *dev_priv, in vmw_cmd_dx_set_index_buffer() argument
2340 ret = vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_dx_set_index_buffer()
2365 static int vmw_cmd_dx_set_rendertargets(struct vmw_private *dev_priv, in vmw_cmd_dx_set_rendertargets() argument
2398 static int vmw_cmd_dx_clear_rendertarget_view(struct vmw_private *dev_priv, in vmw_cmd_dx_clear_rendertarget_view() argument
2420 static int vmw_cmd_dx_clear_depthstencil_view(struct vmw_private *dev_priv, in vmw_cmd_dx_clear_depthstencil_view() argument
2434 static int vmw_cmd_dx_view_define(struct vmw_private *dev_priv, in vmw_cmd_dx_view_define() argument
2465 ret = vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_dx_view_define()
2491 static int vmw_cmd_dx_set_so_targets(struct vmw_private *dev_priv, in vmw_cmd_dx_set_so_targets() argument
2517 ret = vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_dx_set_so_targets()
2537 static int vmw_cmd_dx_so_define(struct vmw_private *dev_priv, in vmw_cmd_dx_so_define() argument
2575 static int vmw_cmd_dx_check_subresource(struct vmw_private *dev_priv, in vmw_cmd_dx_check_subresource() argument
2597 return vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_dx_check_subresource()
2602 static int vmw_cmd_dx_cid_check(struct vmw_private *dev_priv, in vmw_cmd_dx_cid_check() argument
2625 static int vmw_cmd_dx_view_remove(struct vmw_private *dev_priv, in vmw_cmd_dx_view_remove() argument
2665 static int vmw_cmd_dx_define_shader(struct vmw_private *dev_priv, in vmw_cmd_dx_define_shader() argument
2697 static int vmw_cmd_dx_destroy_shader(struct vmw_private *dev_priv, in vmw_cmd_dx_destroy_shader() argument
2722 static int vmw_cmd_dx_bind_shader(struct vmw_private *dev_priv, in vmw_cmd_dx_bind_shader() argument
2733 ret = vmw_cmd_res_check(dev_priv, sw_context, vmw_res_context, in vmw_cmd_dx_bind_shader()
2762 return vmw_cmd_res_switch_backup(dev_priv, sw_context, res, in vmw_cmd_dx_bind_shader()
2774 static int vmw_cmd_dx_genmips(struct vmw_private *dev_priv, in vmw_cmd_dx_genmips() argument
2808 static int vmw_cmd_dx_transfer_from_buffer(struct vmw_private *dev_priv, in vmw_cmd_dx_transfer_from_buffer() argument
2816 ret = vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_dx_transfer_from_buffer()
2822 return vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_dx_transfer_from_buffer()
2834 static int vmw_cmd_intra_surface_copy(struct vmw_private *dev_priv, in vmw_cmd_intra_surface_copy() argument
2841 if (!(dev_priv->capabilities2 & SVGA_CAP2_INTRA_SURFACE_COPY)) in vmw_cmd_intra_surface_copy()
2844 return vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_intra_surface_copy()
2849 static int vmw_cmd_sm5(struct vmw_private *dev_priv, in vmw_cmd_sm5() argument
2853 if (!has_sm5_context(dev_priv)) in vmw_cmd_sm5()
2859 static int vmw_cmd_sm5_view_define(struct vmw_private *dev_priv, in vmw_cmd_sm5_view_define() argument
2863 if (!has_sm5_context(dev_priv)) in vmw_cmd_sm5_view_define()
2866 return vmw_cmd_dx_view_define(dev_priv, sw_context, header); in vmw_cmd_sm5_view_define()
2869 static int vmw_cmd_sm5_view_remove(struct vmw_private *dev_priv, in vmw_cmd_sm5_view_remove() argument
2873 if (!has_sm5_context(dev_priv)) in vmw_cmd_sm5_view_remove()
2876 return vmw_cmd_dx_view_remove(dev_priv, sw_context, header); in vmw_cmd_sm5_view_remove()
2879 static int vmw_cmd_clear_uav_uint(struct vmw_private *dev_priv, in vmw_cmd_clear_uav_uint() argument
2889 if (!has_sm5_context(dev_priv)) in vmw_cmd_clear_uav_uint()
2898 static int vmw_cmd_clear_uav_float(struct vmw_private *dev_priv, in vmw_cmd_clear_uav_float() argument
2908 if (!has_sm5_context(dev_priv)) in vmw_cmd_clear_uav_float()
2917 static int vmw_cmd_set_uav(struct vmw_private *dev_priv, in vmw_cmd_set_uav() argument
2929 if (!has_sm5_context(dev_priv)) in vmw_cmd_set_uav()
2932 if (num_uav > vmw_max_num_uavs(dev_priv)) { in vmw_cmd_set_uav()
2949 static int vmw_cmd_set_cs_uav(struct vmw_private *dev_priv, in vmw_cmd_set_cs_uav() argument
2961 if (!has_sm5_context(dev_priv)) in vmw_cmd_set_cs_uav()
2964 if (num_uav > vmw_max_num_uavs(dev_priv)) { in vmw_cmd_set_cs_uav()
2981 static int vmw_cmd_dx_define_streamoutput(struct vmw_private *dev_priv, in vmw_cmd_dx_define_streamoutput() argument
2993 if (!has_sm5_context(dev_priv)) in vmw_cmd_dx_define_streamoutput()
3013 static int vmw_cmd_dx_destroy_streamoutput(struct vmw_private *dev_priv, in vmw_cmd_dx_destroy_streamoutput() argument
3033 if (!has_sm5_context(dev_priv)) in vmw_cmd_dx_destroy_streamoutput()
3049 static int vmw_cmd_dx_bind_streamoutput(struct vmw_private *dev_priv, in vmw_cmd_dx_bind_streamoutput() argument
3061 if (!has_sm5_context(dev_priv)) in vmw_cmd_dx_bind_streamoutput()
3085 return vmw_cmd_res_switch_backup(dev_priv, sw_context, res, in vmw_cmd_dx_bind_streamoutput()
3090 static int vmw_cmd_dx_set_streamoutput(struct vmw_private *dev_priv, in vmw_cmd_dx_set_streamoutput() argument
3115 if (!has_sm5_context(dev_priv)) in vmw_cmd_dx_set_streamoutput()
3146 static int vmw_cmd_indexed_instanced_indirect(struct vmw_private *dev_priv, in vmw_cmd_indexed_instanced_indirect() argument
3155 if (!has_sm5_context(dev_priv)) in vmw_cmd_indexed_instanced_indirect()
3158 return vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_indexed_instanced_indirect()
3163 static int vmw_cmd_instanced_indirect(struct vmw_private *dev_priv, in vmw_cmd_instanced_indirect() argument
3172 if (!has_sm5_context(dev_priv)) in vmw_cmd_instanced_indirect()
3175 return vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_instanced_indirect()
3180 static int vmw_cmd_dispatch_indirect(struct vmw_private *dev_priv, in vmw_cmd_dispatch_indirect() argument
3189 if (!has_sm5_context(dev_priv)) in vmw_cmd_dispatch_indirect()
3192 return vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface, in vmw_cmd_dispatch_indirect()
3197 static int vmw_cmd_check_not_3d(struct vmw_private *dev_priv, in vmw_cmd_check_not_3d() argument
3235 return vmw_cmd_check_define_gmrfb(dev_priv, sw_context, buf); in vmw_cmd_check_not_3d()
3646 static int vmw_cmd_check(struct vmw_private *dev_priv, in vmw_cmd_check() argument
3655 bool gb = dev_priv->capabilities & SVGA_CAP_GBOBJECTS; in vmw_cmd_check()
3660 return vmw_cmd_check_not_3d(dev_priv, sw_context, buf, size); in vmw_cmd_check()
3686 ret = entry->func(dev_priv, sw_context, header); in vmw_cmd_check()
3712 static int vmw_cmd_check_all(struct vmw_private *dev_priv, in vmw_cmd_check_all() argument
3723 ret = vmw_cmd_check(dev_priv, sw_context, buf, &size); in vmw_cmd_check_all()
3808 struct vmw_private *dev_priv, in vmw_execbuf_fence_commands() argument
3819 ret = vmw_cmd_send_fence(dev_priv, &sequence); in vmw_execbuf_fence_commands()
3826 ret = vmw_user_fence_create(file_priv, dev_priv->fman, in vmw_execbuf_fence_commands()
3829 ret = vmw_fence_create(dev_priv->fman, sequence, p_fence); in vmw_execbuf_fence_commands()
3832 (void) vmw_fallback_wait(dev_priv, false, false, sequence, in vmw_execbuf_fence_commands()
3861 vmw_execbuf_copy_fence_user(struct vmw_private *dev_priv, in vmw_execbuf_copy_fence_user() argument
3881 fence_rep.passed_seqno = vmw_fences_update(dev_priv->fman); in vmw_execbuf_copy_fence_user()
3917 static int vmw_execbuf_submit_fifo(struct vmw_private *dev_priv, in vmw_execbuf_submit_fifo() argument
3924 cmd = VMW_CMD_CTX_RESERVE(dev_priv, command_size, in vmw_execbuf_submit_fifo()
3927 cmd = VMW_CMD_RESERVE(dev_priv, command_size); in vmw_execbuf_submit_fifo()
3936 vmw_cmd_commit(dev_priv, command_size); in vmw_execbuf_submit_fifo()
3953 static int vmw_execbuf_submit_cmdbuf(struct vmw_private *dev_priv, in vmw_execbuf_submit_cmdbuf() argument
3960 void *cmd = vmw_cmdbuf_reserve(dev_priv->cman, command_size, id, false, in vmw_execbuf_submit_cmdbuf()
3966 vmw_cmdbuf_commit(dev_priv->cman, command_size, header, false); in vmw_execbuf_submit_cmdbuf()
3995 static void *vmw_execbuf_cmdbuf(struct vmw_private *dev_priv, in vmw_execbuf_cmdbuf() argument
4009 if (!dev_priv->cman || kernel_commands) in vmw_execbuf_cmdbuf()
4015 kernel_commands = vmw_cmdbuf_alloc(dev_priv->cman, cmdbuf_size, true, in vmw_execbuf_cmdbuf()
4031 static int vmw_execbuf_tie_context(struct vmw_private *dev_priv, in vmw_execbuf_tie_context() argument
4042 size = vmw_execbuf_res_size(dev_priv, vmw_res_dx_context); in vmw_execbuf_tie_context()
4048 (dev_priv, sw_context->fp->tfile, handle, in vmw_execbuf_tie_context()
4071 struct vmw_private *dev_priv, in vmw_execbuf_process() argument
4078 struct vmw_sw_context *sw_context = &dev_priv->ctx; in vmw_execbuf_process()
4099 kernel_commands = vmw_execbuf_cmdbuf(dev_priv, user_commands, in vmw_execbuf_process()
4107 ret = mutex_lock_interruptible(&dev_priv->cmdbuf_mutex); in vmw_execbuf_process()
4135 sw_context->cur_query_bo = dev_priv->pinned_bo; in vmw_execbuf_process()
4150 ret = vmw_execbuf_tie_context(dev_priv, sw_context, dx_context_handle); in vmw_execbuf_process()
4154 ret = vmw_cmd_check_all(dev_priv, sw_context, kernel_commands, in vmw_execbuf_process()
4177 ret = mutex_lock_interruptible(&dev_priv->binding_mutex); in vmw_execbuf_process()
4183 if (dev_priv->has_mob) { in vmw_execbuf_process()
4190 ret = vmw_execbuf_submit_fifo(dev_priv, kernel_commands, in vmw_execbuf_process()
4193 ret = vmw_execbuf_submit_cmdbuf(dev_priv, header, command_size, in vmw_execbuf_process()
4197 mutex_unlock(&dev_priv->binding_mutex); in vmw_execbuf_process()
4201 vmw_query_bo_switch_commit(dev_priv, sw_context); in vmw_execbuf_process()
4202 ret = vmw_execbuf_fence_commands(file_priv, dev_priv, &fence, in vmw_execbuf_process()
4218 if (unlikely(dev_priv->pinned_bo != NULL && !dev_priv->query_cid_valid)) in vmw_execbuf_process()
4219 __vmw_execbuf_release_pinned_bo(dev_priv, fence); in vmw_execbuf_process()
4239 ret = vmw_execbuf_copy_fence_user(dev_priv, vmw_fpriv(file_priv), ret, in vmw_execbuf_process()
4262 mutex_unlock(&dev_priv->cmdbuf_mutex); in vmw_execbuf_process()
4273 mutex_unlock(&dev_priv->binding_mutex); in vmw_execbuf_process()
4281 if (unlikely(dev_priv->pinned_bo != NULL && !dev_priv->query_cid_valid)) in vmw_execbuf_process()
4282 __vmw_execbuf_release_pinned_bo(dev_priv, NULL); in vmw_execbuf_process()
4287 mutex_unlock(&dev_priv->cmdbuf_mutex); in vmw_execbuf_process()
4313 static void vmw_execbuf_unpin_panic(struct vmw_private *dev_priv) in vmw_execbuf_unpin_panic() argument
4317 (void) vmw_fallback_wait(dev_priv, false, true, 0, false, 10*HZ); in vmw_execbuf_unpin_panic()
4318 vmw_bo_pin_reserved(dev_priv->pinned_bo, false); in vmw_execbuf_unpin_panic()
4319 if (dev_priv->dummy_query_bo_pinned) { in vmw_execbuf_unpin_panic()
4320 vmw_bo_pin_reserved(dev_priv->dummy_query_bo, false); in vmw_execbuf_unpin_panic()
4321 dev_priv->dummy_query_bo_pinned = false; in vmw_execbuf_unpin_panic()
4349 void __vmw_execbuf_release_pinned_bo(struct vmw_private *dev_priv, in __vmw_execbuf_release_pinned_bo() argument
4356 if (dev_priv->pinned_bo == NULL) in __vmw_execbuf_release_pinned_bo()
4359 vmw_bo_placement_set(dev_priv->pinned_bo, in __vmw_execbuf_release_pinned_bo()
4362 ret = vmw_validation_add_bo(&val_ctx, dev_priv->pinned_bo); in __vmw_execbuf_release_pinned_bo()
4366 vmw_bo_placement_set(dev_priv->dummy_query_bo, in __vmw_execbuf_release_pinned_bo()
4369 ret = vmw_validation_add_bo(&val_ctx, dev_priv->dummy_query_bo); in __vmw_execbuf_release_pinned_bo()
4377 if (dev_priv->query_cid_valid) { in __vmw_execbuf_release_pinned_bo()
4379 ret = vmw_cmd_emit_dummy_query(dev_priv, dev_priv->query_cid); in __vmw_execbuf_release_pinned_bo()
4382 dev_priv->query_cid_valid = false; in __vmw_execbuf_release_pinned_bo()
4385 vmw_bo_pin_reserved(dev_priv->pinned_bo, false); in __vmw_execbuf_release_pinned_bo()
4386 if (dev_priv->dummy_query_bo_pinned) { in __vmw_execbuf_release_pinned_bo()
4387 vmw_bo_pin_reserved(dev_priv->dummy_query_bo, false); in __vmw_execbuf_release_pinned_bo()
4388 dev_priv->dummy_query_bo_pinned = false; in __vmw_execbuf_release_pinned_bo()
4391 (void) vmw_execbuf_fence_commands(NULL, dev_priv, &lfence, in __vmw_execbuf_release_pinned_bo()
4400 vmw_bo_unreference(&dev_priv->pinned_bo); in __vmw_execbuf_release_pinned_bo()
4408 vmw_execbuf_unpin_panic(dev_priv); in __vmw_execbuf_release_pinned_bo()
4409 vmw_bo_unreference(&dev_priv->pinned_bo); in __vmw_execbuf_release_pinned_bo()
4428 void vmw_execbuf_release_pinned_bo(struct vmw_private *dev_priv) in vmw_execbuf_release_pinned_bo() argument
4430 mutex_lock(&dev_priv->cmdbuf_mutex); in vmw_execbuf_release_pinned_bo()
4431 if (dev_priv->query_cid_valid) in vmw_execbuf_release_pinned_bo()
4432 __vmw_execbuf_release_pinned_bo(dev_priv, NULL); in vmw_execbuf_release_pinned_bo()
4433 mutex_unlock(&dev_priv->cmdbuf_mutex); in vmw_execbuf_release_pinned_bo()
4439 struct vmw_private *dev_priv = vmw_priv(dev); in vmw_execbuf_ioctl() local
4486 ret = vmw_execbuf_process(file_priv, dev_priv, in vmw_execbuf_ioctl()