Lines Matching refs:res

35 	struct vmw_resource res;  member
48 struct vmw_resource res; member
60 static void vmw_user_shader_free(struct vmw_resource *res);
64 static int vmw_gb_shader_create(struct vmw_resource *res);
65 static int vmw_gb_shader_bind(struct vmw_resource *res,
67 static int vmw_gb_shader_unbind(struct vmw_resource *res,
70 static int vmw_gb_shader_destroy(struct vmw_resource *res);
72 static int vmw_dx_shader_create(struct vmw_resource *res);
73 static int vmw_dx_shader_bind(struct vmw_resource *res,
75 static int vmw_dx_shader_unbind(struct vmw_resource *res,
78 static void vmw_dx_shader_commit_notify(struct vmw_resource *res,
133 vmw_res_to_shader(struct vmw_resource *res) in vmw_res_to_shader() argument
135 return container_of(res, struct vmw_shader, res); in vmw_res_to_shader()
145 vmw_res_to_dx_shader(struct vmw_resource *res) in vmw_res_to_dx_shader() argument
147 return container_of(res, struct vmw_dx_shader, res); in vmw_res_to_dx_shader()
150 static void vmw_hw_shader_destroy(struct vmw_resource *res) in vmw_hw_shader_destroy() argument
152 if (likely(res->func->destroy)) in vmw_hw_shader_destroy()
153 (void) res->func->destroy(res); in vmw_hw_shader_destroy()
155 res->id = -1; in vmw_hw_shader_destroy()
160 struct vmw_resource *res, in vmw_gb_shader_init() argument
167 void (*res_free) (struct vmw_resource *res)) in vmw_gb_shader_init()
169 struct vmw_shader *shader = vmw_res_to_shader(res); in vmw_gb_shader_init()
172 ret = vmw_resource_init(dev_priv, res, true, res_free, in vmw_gb_shader_init()
177 res_free(res); in vmw_gb_shader_init()
179 kfree(res); in vmw_gb_shader_init()
183 res->backup_size = size; in vmw_gb_shader_init()
185 res->backup = vmw_bo_reference(byte_code); in vmw_gb_shader_init()
186 res->backup_offset = offset; in vmw_gb_shader_init()
193 res->hw_destroy = vmw_hw_shader_destroy; in vmw_gb_shader_init()
201 static int vmw_gb_shader_create(struct vmw_resource *res) in vmw_gb_shader_create() argument
203 struct vmw_private *dev_priv = res->dev_priv; in vmw_gb_shader_create()
204 struct vmw_shader *shader = vmw_res_to_shader(res); in vmw_gb_shader_create()
211 if (likely(res->id != -1)) in vmw_gb_shader_create()
214 ret = vmw_resource_alloc_id(res); in vmw_gb_shader_create()
220 if (unlikely(res->id >= VMWGFX_NUM_GB_SHADER)) { in vmw_gb_shader_create()
233 cmd->body.shid = res->id; in vmw_gb_shader_create()
242 vmw_resource_release_id(res); in vmw_gb_shader_create()
247 static int vmw_gb_shader_bind(struct vmw_resource *res, in vmw_gb_shader_bind() argument
250 struct vmw_private *dev_priv = res->dev_priv; in vmw_gb_shader_bind()
265 cmd->body.shid = res->id; in vmw_gb_shader_bind()
267 cmd->body.offsetInBytes = res->backup_offset; in vmw_gb_shader_bind()
268 res->backup_dirty = false; in vmw_gb_shader_bind()
274 static int vmw_gb_shader_unbind(struct vmw_resource *res, in vmw_gb_shader_unbind() argument
278 struct vmw_private *dev_priv = res->dev_priv; in vmw_gb_shader_unbind()
285 BUG_ON(res->backup->base.resource->mem_type != VMW_PL_MOB); in vmw_gb_shader_unbind()
293 cmd->body.shid = res->id; in vmw_gb_shader_unbind()
313 static int vmw_gb_shader_destroy(struct vmw_resource *res) in vmw_gb_shader_destroy() argument
315 struct vmw_private *dev_priv = res->dev_priv; in vmw_gb_shader_destroy()
321 if (likely(res->id == -1)) in vmw_gb_shader_destroy()
325 vmw_binding_res_list_scrub(&res->binding_head); in vmw_gb_shader_destroy()
335 cmd->body.shid = res->id; in vmw_gb_shader_destroy()
338 vmw_resource_release_id(res); in vmw_gb_shader_destroy()
356 static void vmw_dx_shader_commit_notify(struct vmw_resource *res, in vmw_dx_shader_commit_notify() argument
359 struct vmw_dx_shader *shader = vmw_res_to_dx_shader(res); in vmw_dx_shader_commit_notify()
360 struct vmw_private *dev_priv = res->dev_priv; in vmw_dx_shader_commit_notify()
367 res->id = shader->id; in vmw_dx_shader_commit_notify()
373 res->id = -1; in vmw_dx_shader_commit_notify()
385 static int vmw_dx_shader_unscrub(struct vmw_resource *res) in vmw_dx_shader_unscrub() argument
387 struct vmw_dx_shader *shader = vmw_res_to_dx_shader(res); in vmw_dx_shader_unscrub()
388 struct vmw_private *dev_priv = res->dev_priv; in vmw_dx_shader_unscrub()
405 cmd->body.mobid = res->backup->base.resource->start; in vmw_dx_shader_unscrub()
406 cmd->body.offsetInBytes = res->backup_offset; in vmw_dx_shader_unscrub()
422 static int vmw_dx_shader_create(struct vmw_resource *res) in vmw_dx_shader_create() argument
424 struct vmw_private *dev_priv = res->dev_priv; in vmw_dx_shader_create()
425 struct vmw_dx_shader *shader = vmw_res_to_dx_shader(res); in vmw_dx_shader_create()
430 if (vmw_resource_mob_attached(res)) { in vmw_dx_shader_create()
432 ret = vmw_dx_shader_unscrub(res); in vmw_dx_shader_create()
436 res->id = shader->id; in vmw_dx_shader_create()
447 static int vmw_dx_shader_bind(struct vmw_resource *res, in vmw_dx_shader_bind() argument
450 struct vmw_private *dev_priv = res->dev_priv; in vmw_dx_shader_bind()
455 vmw_dx_shader_unscrub(res); in vmw_dx_shader_bind()
471 static int vmw_dx_shader_scrub(struct vmw_resource *res) in vmw_dx_shader_scrub() argument
473 struct vmw_dx_shader *shader = vmw_res_to_dx_shader(res); in vmw_dx_shader_scrub()
474 struct vmw_private *dev_priv = res->dev_priv; in vmw_dx_shader_scrub()
491 cmd->body.shid = res->id; in vmw_dx_shader_scrub()
495 res->id = -1; in vmw_dx_shader_scrub()
508 static int vmw_dx_shader_unbind(struct vmw_resource *res, in vmw_dx_shader_unbind() argument
512 struct vmw_private *dev_priv = res->dev_priv; in vmw_dx_shader_unbind()
516 BUG_ON(res->backup->base.resource->mem_type != VMW_PL_MOB); in vmw_dx_shader_unbind()
519 ret = vmw_dx_shader_scrub(res); in vmw_dx_shader_unbind()
555 WARN_ON(vmw_dx_shader_scrub(&entry->res)); in vmw_dx_shader_cotable_list_scrub()
568 static void vmw_dx_shader_res_free(struct vmw_resource *res) in vmw_dx_shader_res_free() argument
570 struct vmw_private *dev_priv = res->dev_priv; in vmw_dx_shader_res_free()
571 struct vmw_dx_shader *shader = vmw_res_to_dx_shader(res); in vmw_dx_shader_res_free()
595 struct vmw_resource *res; in vmw_dx_shader_add() local
624 res = &shader->res; in vmw_dx_shader_add()
631 ret = vmw_resource_init(dev_priv, res, true, in vmw_dx_shader_add()
642 res, list); in vmw_dx_shader_add()
646 res->id = shader->id; in vmw_dx_shader_add()
647 res->hw_destroy = vmw_hw_shader_destroy; in vmw_dx_shader_add()
650 vmw_resource_unreference(&res); in vmw_dx_shader_add()
665 shader.res); in vmw_user_shader_base_to_res()
668 static void vmw_user_shader_free(struct vmw_resource *res) in vmw_user_shader_free() argument
671 container_of(res, struct vmw_user_shader, shader.res); in vmw_user_shader_free()
672 struct vmw_private *dev_priv = res->dev_priv; in vmw_user_shader_free()
679 static void vmw_shader_free(struct vmw_resource *res) in vmw_shader_free() argument
681 struct vmw_shader *shader = vmw_res_to_shader(res); in vmw_shader_free()
682 struct vmw_private *dev_priv = res->dev_priv; in vmw_shader_free()
697 struct vmw_resource *res = vmw_user_shader_base_to_res(base); in vmw_user_shader_base_release() local
700 vmw_resource_unreference(&res); in vmw_user_shader_base_release()
724 struct vmw_resource *res, *tmp; in vmw_user_shader_alloc() local
754 res = &ushader->shader.res; in vmw_user_shader_alloc()
762 ret = vmw_gb_shader_init(dev_priv, res, shader_size, in vmw_user_shader_alloc()
769 tmp = vmw_resource_reference(res); in vmw_user_shader_alloc()
782 vmw_resource_unreference(&res); in vmw_user_shader_alloc()
795 struct vmw_resource *res; in vmw_shader_alloc() local
825 res = &shader->res; in vmw_shader_alloc()
830 ret = vmw_gb_shader_init(dev_priv, res, shader_size, in vmw_shader_alloc()
835 return ret ? ERR_PTR(ret) : res; in vmw_shader_alloc()
964 struct vmw_resource *res; in vmw_compat_shader_add() local
998 res = vmw_shader_alloc(dev_priv, buf, size, 0, shader_type); in vmw_compat_shader_add()
1004 res, list); in vmw_compat_shader_add()
1005 vmw_resource_unreference(&res); in vmw_compat_shader_add()