Lines Matching refs:res

33 	struct vmw_resource res;  member
46 static void vmw_user_shader_free(struct vmw_resource *res);
50 static int vmw_gb_shader_create(struct vmw_resource *res);
51 static int vmw_gb_shader_bind(struct vmw_resource *res,
53 static int vmw_gb_shader_unbind(struct vmw_resource *res,
56 static int vmw_gb_shader_destroy(struct vmw_resource *res);
85 vmw_res_to_shader(struct vmw_resource *res) in vmw_res_to_shader() argument
87 return container_of(res, struct vmw_shader, res); in vmw_res_to_shader()
90 static void vmw_hw_shader_destroy(struct vmw_resource *res) in vmw_hw_shader_destroy() argument
92 (void) vmw_gb_shader_destroy(res); in vmw_hw_shader_destroy()
96 struct vmw_resource *res, in vmw_gb_shader_init() argument
101 void (*res_free) (struct vmw_resource *res)) in vmw_gb_shader_init()
103 struct vmw_shader *shader = vmw_res_to_shader(res); in vmw_gb_shader_init()
106 ret = vmw_resource_init(dev_priv, res, true, in vmw_gb_shader_init()
112 res_free(res); in vmw_gb_shader_init()
114 kfree(res); in vmw_gb_shader_init()
118 res->backup_size = size; in vmw_gb_shader_init()
120 res->backup = vmw_dmabuf_reference(byte_code); in vmw_gb_shader_init()
121 res->backup_offset = offset; in vmw_gb_shader_init()
126 vmw_resource_activate(res, vmw_hw_shader_destroy); in vmw_gb_shader_init()
130 static int vmw_gb_shader_create(struct vmw_resource *res) in vmw_gb_shader_create() argument
132 struct vmw_private *dev_priv = res->dev_priv; in vmw_gb_shader_create()
133 struct vmw_shader *shader = vmw_res_to_shader(res); in vmw_gb_shader_create()
140 if (likely(res->id != -1)) in vmw_gb_shader_create()
143 ret = vmw_resource_alloc_id(res); in vmw_gb_shader_create()
149 if (unlikely(res->id >= VMWGFX_NUM_GB_SHADER)) { in vmw_gb_shader_create()
164 cmd->body.shid = res->id; in vmw_gb_shader_create()
173 vmw_resource_release_id(res); in vmw_gb_shader_create()
178 static int vmw_gb_shader_bind(struct vmw_resource *res, in vmw_gb_shader_bind() argument
181 struct vmw_private *dev_priv = res->dev_priv; in vmw_gb_shader_bind()
199 cmd->body.shid = res->id; in vmw_gb_shader_bind()
201 cmd->body.offsetInBytes = res->backup_offset; in vmw_gb_shader_bind()
202 res->backup_dirty = false; in vmw_gb_shader_bind()
208 static int vmw_gb_shader_unbind(struct vmw_resource *res, in vmw_gb_shader_unbind() argument
212 struct vmw_private *dev_priv = res->dev_priv; in vmw_gb_shader_unbind()
219 BUG_ON(res->backup->base.mem.mem_type != VMW_PL_MOB); in vmw_gb_shader_unbind()
230 cmd->body.shid = res->id; in vmw_gb_shader_unbind()
250 static int vmw_gb_shader_destroy(struct vmw_resource *res) in vmw_gb_shader_destroy() argument
252 struct vmw_private *dev_priv = res->dev_priv; in vmw_gb_shader_destroy()
258 if (likely(res->id == -1)) in vmw_gb_shader_destroy()
262 vmw_context_binding_res_list_scrub(&res->binding_head); in vmw_gb_shader_destroy()
274 cmd->body.shid = res->id; in vmw_gb_shader_destroy()
277 vmw_resource_release_id(res); in vmw_gb_shader_destroy()
291 shader.res); in vmw_user_shader_base_to_res()
294 static void vmw_user_shader_free(struct vmw_resource *res) in vmw_user_shader_free() argument
297 container_of(res, struct vmw_user_shader, shader.res); in vmw_user_shader_free()
298 struct vmw_private *dev_priv = res->dev_priv; in vmw_user_shader_free()
305 static void vmw_shader_free(struct vmw_resource *res) in vmw_shader_free() argument
307 struct vmw_shader *shader = vmw_res_to_shader(res); in vmw_shader_free()
308 struct vmw_private *dev_priv = res->dev_priv; in vmw_shader_free()
323 struct vmw_resource *res = vmw_user_shader_base_to_res(base); in vmw_user_shader_base_release() local
326 vmw_resource_unreference(&res); in vmw_user_shader_base_release()
348 struct vmw_resource *res, *tmp; in vmw_user_shader_alloc() local
377 res = &ushader->shader.res; in vmw_user_shader_alloc()
385 ret = vmw_gb_shader_init(dev_priv, res, shader_size, in vmw_user_shader_alloc()
391 tmp = vmw_resource_reference(res); in vmw_user_shader_alloc()
404 vmw_resource_unreference(&res); in vmw_user_shader_alloc()
417 struct vmw_resource *res; in vmw_shader_alloc() local
446 res = &shader->res; in vmw_shader_alloc()
451 ret = vmw_gb_shader_init(dev_priv, res, shader_size, in vmw_shader_alloc()
456 return ret ? ERR_PTR(ret) : res; in vmw_shader_alloc()
592 struct vmw_resource *res; in vmw_compat_shader_add() local
627 res = vmw_shader_alloc(dev_priv, buf, size, 0, shader_type); in vmw_compat_shader_add()
633 res, list); in vmw_compat_shader_add()
634 vmw_resource_unreference(&res); in vmw_compat_shader_add()