• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright © 2020 Valve Corporation
3  *
4  * based on amdgpu winsys.
5  * Copyright © 2016 Red Hat.
6  * Copyright © 2016 Bas Nieuwenhuizen
7  *
8  * Permission is hereby granted, free of charge, to any person obtaining a
9  * copy of this software and associated documentation files (the "Software"),
10  * to deal in the Software without restriction, including without limitation
11  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
12  * and/or sell copies of the Software, and to permit persons to whom the
13  * Software is furnished to do so, subject to the following conditions:
14  *
15  * The above copyright notice and this permission notice (including the next
16  * paragraph) shall be included in all copies or substantial portions of the
17  * Software.
18  *
19  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
22  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
24  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
25  * IN THE SOFTWARE.
26  */
27 
28 #include "radv_null_bo.h"
29 #include "util/u_memory.h"
30 
31 static struct radeon_winsys_bo *
radv_null_winsys_bo_create(struct radeon_winsys * _ws,uint64_t size,unsigned alignment,enum radeon_bo_domain initial_domain,unsigned flags,unsigned priority)32 radv_null_winsys_bo_create(struct radeon_winsys *_ws,
33 			   uint64_t size,
34 			   unsigned alignment,
35 			   enum radeon_bo_domain initial_domain,
36 			   unsigned flags,
37 			   unsigned priority)
38 {
39 	struct radv_null_winsys_bo *bo;
40 
41 	bo = CALLOC_STRUCT(radv_null_winsys_bo);
42 	if (!bo)
43 		return NULL;
44 
45 	bo->ptr = malloc(size);
46 	if (!bo->ptr)
47 		goto error_ptr_alloc;
48 
49 	return (struct radeon_winsys_bo *)bo;
50 error_ptr_alloc:
51 	FREE(bo);
52 	return NULL;
53 }
54 
55 static void *
radv_null_winsys_bo_map(struct radeon_winsys_bo * _bo)56 radv_null_winsys_bo_map(struct radeon_winsys_bo *_bo)
57 {
58 	struct radv_null_winsys_bo *bo = radv_null_winsys_bo(_bo);
59 	return bo->ptr;
60 }
61 
62 static void
radv_null_winsys_bo_unmap(struct radeon_winsys_bo * _bo)63 radv_null_winsys_bo_unmap(struct radeon_winsys_bo *_bo)
64 {
65 }
66 
radv_null_winsys_bo_destroy(struct radeon_winsys_bo * _bo)67 static void radv_null_winsys_bo_destroy(struct radeon_winsys_bo *_bo)
68 {
69 	struct radv_null_winsys_bo *bo = radv_null_winsys_bo(_bo);
70 	FREE(bo->ptr);
71 	FREE(bo);
72 }
73 
radv_null_bo_init_functions(struct radv_null_winsys * ws)74 void radv_null_bo_init_functions(struct radv_null_winsys *ws)
75 {
76 	ws->base.buffer_create = radv_null_winsys_bo_create;
77 	ws->base.buffer_destroy = radv_null_winsys_bo_destroy;
78 	ws->base.buffer_map = radv_null_winsys_bo_map;
79 	ws->base.buffer_unmap = radv_null_winsys_bo_unmap;
80 }
81