Merge branch '7.8'
[mesa.git] / src / gallium / auxiliary / util / u_resource.c
1
2
3 #include "util/u_inlines.h"
4 #include "util/u_transfer.h"
5
6 static INLINE struct u_resource *
7 u_resource( struct pipe_resource *res )
8 {
9 return (struct u_resource *)res;
10 }
11
12 boolean u_resource_get_handle_vtbl(struct pipe_screen *screen,
13 struct pipe_resource *resource,
14 struct winsys_handle *handle)
15 {
16 struct u_resource *ur = u_resource(resource);
17 return ur->vtbl->resource_get_handle(screen, resource, handle);
18 }
19
20 void u_resource_destroy_vtbl(struct pipe_screen *screen,
21 struct pipe_resource *resource)
22 {
23 struct u_resource *ur = u_resource(resource);
24 ur->vtbl->resource_destroy(screen, resource);
25 }
26
27 unsigned u_is_resource_referenced_vtbl( struct pipe_context *pipe,
28 struct pipe_resource *resource,
29 unsigned face, unsigned level)
30 {
31 struct u_resource *ur = u_resource(resource);
32 return ur->vtbl->is_resource_referenced(pipe, resource, face, level);
33 }
34
35 struct pipe_transfer *u_get_transfer_vtbl(struct pipe_context *context,
36 struct pipe_resource *resource,
37 struct pipe_subresource sr,
38 enum pipe_transfer_usage usage,
39 const struct pipe_box *box)
40 {
41 struct u_resource *ur = u_resource(resource);
42 return ur->vtbl->get_transfer(context, resource, sr, usage, box);
43 }
44
45 void u_transfer_destroy_vtbl(struct pipe_context *pipe,
46 struct pipe_transfer *transfer)
47 {
48 struct u_resource *ur = u_resource(transfer->resource);
49 ur->vtbl->transfer_destroy(pipe, transfer);
50 }
51
52 void *u_transfer_map_vtbl( struct pipe_context *pipe,
53 struct pipe_transfer *transfer )
54 {
55 struct u_resource *ur = u_resource(transfer->resource);
56 return ur->vtbl->transfer_map(pipe, transfer);
57 }
58
59 void u_transfer_flush_region_vtbl( struct pipe_context *pipe,
60 struct pipe_transfer *transfer,
61 const struct pipe_box *box)
62 {
63 struct u_resource *ur = u_resource(transfer->resource);
64 ur->vtbl->transfer_flush_region(pipe, transfer, box);
65 }
66
67 void u_transfer_unmap_vtbl( struct pipe_context *pipe,
68 struct pipe_transfer *transfer )
69 {
70 struct u_resource *ur = u_resource(transfer->resource);
71 ur->vtbl->transfer_unmap(pipe, transfer);
72 }
73
74 void u_transfer_inline_write_vtbl( struct pipe_context *pipe,
75 struct pipe_resource *resource,
76 struct pipe_subresource sr,
77 unsigned usage,
78 const struct pipe_box *box,
79 const void *data,
80 unsigned stride,
81 unsigned slice_stride)
82 {
83 struct u_resource *ur = u_resource(resource);
84 ur->vtbl->transfer_inline_write(pipe,
85 resource,
86 sr,
87 usage,
88 box,
89 data,
90 stride,
91 slice_stride);
92 }
93
94
95
96