u_resource.c revision 4c7001462607e6e99e474d6271dd481d3f8f201c
1
2
3#include "util/u_inlines.h"
4#include "util/u_transfer.h"
5
6static INLINE struct u_resource *
7u_resource( struct pipe_resource *res )
8{
9   return (struct u_resource *)res;
10}
11
12boolean 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
20void 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
27unsigned u_is_resource_referenced_vtbl( struct pipe_context *pipe,
28                                        struct pipe_resource *resource,
29                                        unsigned level, int layer)
30{
31   struct u_resource *ur = u_resource(resource);
32   return ur->vtbl->is_resource_referenced(pipe, resource, level, layer);
33}
34
35struct pipe_transfer *u_get_transfer_vtbl(struct pipe_context *context,
36                                          struct pipe_resource *resource,
37                                          unsigned level,
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, level, usage, box);
43}
44
45void 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
52void *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
59void 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
67void 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
74void u_transfer_inline_write_vtbl( struct pipe_context *pipe,
75                                   struct pipe_resource *resource,
76                                   unsigned level,
77                                   unsigned usage,
78                                   const struct pipe_box *box,
79                                   const void *data,
80                                   unsigned stride,
81                                   unsigned layer_stride)
82{
83   struct u_resource *ur = u_resource(resource);
84   ur->vtbl->transfer_inline_write(pipe,
85                                   resource,
86                                   level,
87                                   usage,
88                                   box,
89                                   data,
90                                   stride,
91                                   layer_stride);
92}
93
94
95
96
97