Tizen 2.0 Release
[profile/ivi/osmesa.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 struct pipe_transfer *u_get_transfer_vtbl(struct pipe_context *context,
28                                           struct pipe_resource *resource,
29                                           unsigned level,
30                                           unsigned usage,
31                                           const struct pipe_box *box)
32 {
33    struct u_resource *ur = u_resource(resource);
34    return ur->vtbl->get_transfer(context, resource, level, usage, box);
35 }
36
37 void u_transfer_destroy_vtbl(struct pipe_context *pipe,
38                              struct pipe_transfer *transfer)
39 {
40    struct u_resource *ur = u_resource(transfer->resource);
41    ur->vtbl->transfer_destroy(pipe, transfer);
42 }
43
44 void *u_transfer_map_vtbl( struct pipe_context *pipe,
45                            struct pipe_transfer *transfer )
46 {
47    struct u_resource *ur = u_resource(transfer->resource);
48    return ur->vtbl->transfer_map(pipe, transfer);
49 }
50
51 void u_transfer_flush_region_vtbl( struct pipe_context *pipe,
52                                    struct pipe_transfer *transfer,
53                                    const struct pipe_box *box)
54 {
55    struct u_resource *ur = u_resource(transfer->resource);
56    ur->vtbl->transfer_flush_region(pipe, transfer, box);
57 }
58
59 void u_transfer_unmap_vtbl( struct pipe_context *pipe,
60                             struct pipe_transfer *transfer )
61 {
62    struct u_resource *ur = u_resource(transfer->resource);
63    ur->vtbl->transfer_unmap(pipe, transfer);
64 }
65
66 void u_transfer_inline_write_vtbl( struct pipe_context *pipe,
67                                    struct pipe_resource *resource,
68                                    unsigned level,
69                                    unsigned usage,
70                                    const struct pipe_box *box,
71                                    const void *data,
72                                    unsigned stride,
73                                    unsigned layer_stride)
74 {
75    struct u_resource *ur = u_resource(resource);
76    ur->vtbl->transfer_inline_write(pipe,
77                                    resource,
78                                    level,
79                                    usage,
80                                    box,
81                                    data,
82                                    stride,
83                                    layer_stride);
84 }
85
86
87
88