Lines Matching refs:res

36 	struct vmw_resource res;
49 struct vmw_resource res;
57 static void vmw_user_shader_free(struct vmw_resource *res);
61 static int vmw_gb_shader_create(struct vmw_resource *res);
62 static int vmw_gb_shader_bind(struct vmw_resource *res,
64 static int vmw_gb_shader_unbind(struct vmw_resource *res,
67 static int vmw_gb_shader_destroy(struct vmw_resource *res);
69 static int vmw_dx_shader_create(struct vmw_resource *res);
70 static int vmw_dx_shader_bind(struct vmw_resource *res,
72 static int vmw_dx_shader_unbind(struct vmw_resource *res,
75 static void vmw_dx_shader_commit_notify(struct vmw_resource *res,
131 vmw_res_to_shader(struct vmw_resource *res)
133 return container_of(res, struct vmw_shader, res);
140 * @res: Pointer to the struct vmw_resource.
143 vmw_res_to_dx_shader(struct vmw_resource *res)
145 return container_of(res, struct vmw_dx_shader, res);
148 static void vmw_hw_shader_destroy(struct vmw_resource *res)
150 if (likely(res->func->destroy))
151 (void) res->func->destroy(res);
153 res->id = -1;
158 struct vmw_resource *res,
165 void (*res_free) (struct vmw_resource *res))
167 struct vmw_shader *shader = vmw_res_to_shader(res);
170 ret = vmw_resource_init(dev_priv, res, true, res_free,
175 res_free(res);
177 kfree(res);
181 res->guest_memory_size = size;
183 res->guest_memory_bo = vmw_user_bo_ref(byte_code);
184 res->guest_memory_offset = offset;
191 res->hw_destroy = vmw_hw_shader_destroy;
199 static int vmw_gb_shader_create(struct vmw_resource *res)
201 struct vmw_private *dev_priv = res->dev_priv;
202 struct vmw_shader *shader = vmw_res_to_shader(res);
209 if (likely(res->id != -1))
212 ret = vmw_resource_alloc_id(res);
218 if (unlikely(res->id >= VMWGFX_NUM_GB_SHADER)) {
231 cmd->body.shid = res->id;
240 vmw_resource_release_id(res);
245 static int vmw_gb_shader_bind(struct vmw_resource *res,
248 struct vmw_private *dev_priv = res->dev_priv;
263 cmd->body.shid = res->id;
265 cmd->body.offsetInBytes = res->guest_memory_offset;
266 res->guest_memory_dirty = false;
272 static int vmw_gb_shader_unbind(struct vmw_resource *res,
276 struct vmw_private *dev_priv = res->dev_priv;
283 BUG_ON(res->guest_memory_bo->tbo.resource->mem_type != VMW_PL_MOB);
291 cmd->body.shid = res->id;
311 static int vmw_gb_shader_destroy(struct vmw_resource *res)
313 struct vmw_private *dev_priv = res->dev_priv;
319 if (likely(res->id == -1))
323 vmw_binding_res_list_scrub(&res->binding_head);
333 cmd->body.shid = res->id;
336 vmw_resource_release_id(res);
350 * @res: Pointer to the shader resource.
354 static void vmw_dx_shader_commit_notify(struct vmw_resource *res,
357 struct vmw_dx_shader *shader = vmw_res_to_dx_shader(res);
358 struct vmw_private *dev_priv = res->dev_priv;
365 res->id = shader->id;
371 res->id = -1;
379 * @res: The shader resource
383 static int vmw_dx_shader_unscrub(struct vmw_resource *res)
385 struct vmw_dx_shader *shader = vmw_res_to_dx_shader(res);
386 struct vmw_private *dev_priv = res->dev_priv;
403 cmd->body.mobid = res->guest_memory_bo->tbo.resource->start;
404 cmd->body.offsetInBytes = res->guest_memory_offset;
415 * @res: The DX shader resource
420 static int vmw_dx_shader_create(struct vmw_resource *res)
422 struct vmw_private *dev_priv = res->dev_priv;
423 struct vmw_dx_shader *shader = vmw_res_to_dx_shader(res);
428 if (vmw_resource_mob_attached(res)) {
430 ret = vmw_dx_shader_unscrub(res);
434 res->id = shader->id;
441 * @res: The DX shader resource
445 static int vmw_dx_shader_bind(struct vmw_resource *res,
448 struct vmw_private *dev_priv = res->dev_priv;
453 vmw_dx_shader_unscrub(res);
462 * @res: The shader resource
469 static int vmw_dx_shader_scrub(struct vmw_resource *res)
471 struct vmw_dx_shader *shader = vmw_res_to_dx_shader(res);
472 struct vmw_private *dev_priv = res->dev_priv;
489 cmd->body.shid = res->id;
493 res->id = -1;
502 * @res: The shader resource
506 static int vmw_dx_shader_unbind(struct vmw_resource *res,
510 struct vmw_private *dev_priv = res->dev_priv;
514 BUG_ON(res->guest_memory_bo->tbo.resource->mem_type != VMW_PL_MOB);
517 ret = vmw_dx_shader_scrub(res);
553 WARN_ON(vmw_dx_shader_scrub(&entry->res));
562 * @res: The shader resource
566 static void vmw_dx_shader_res_free(struct vmw_resource *res)
568 struct vmw_dx_shader *shader = vmw_res_to_dx_shader(res);
591 struct vmw_resource *res;
603 res = &shader->res;
610 ret = vmw_resource_init(dev_priv, res, true,
621 res, list);
625 res->id = shader->id;
626 res->hw_destroy = vmw_hw_shader_destroy;
629 vmw_resource_unreference(&res);
644 shader.res);
647 static void vmw_user_shader_free(struct vmw_resource *res)
650 container_of(res, struct vmw_user_shader, shader.res);
655 static void vmw_shader_free(struct vmw_resource *res)
657 struct vmw_shader *shader = vmw_res_to_shader(res);
670 struct vmw_resource *res = vmw_user_shader_base_to_res(base);
673 vmw_resource_unreference(&res);
696 struct vmw_resource *res, *tmp;
705 res = &ushader->shader.res;
713 ret = vmw_gb_shader_init(dev_priv, res, shader_size,
720 tmp = vmw_resource_reference(res);
733 vmw_resource_unreference(&res);
746 struct vmw_resource *res;
755 res = &shader->res;
760 ret = vmw_gb_shader_init(dev_priv, res, shader_size,
765 return ret ? ERR_PTR(ret) : res;
893 struct vmw_resource *res;
928 res = vmw_shader_alloc(dev_priv, buf, size, 0, shader_type);
934 res, list);
935 vmw_resource_unreference(&res);