3 #include "util/u_inlines.h"
4 #include "util/u_transfer.h"
6 static INLINE
struct u_resource
*
7 u_resource( struct pipe_resource
*res
)
9 return (struct u_resource
*)res
;
12 boolean
u_resource_get_handle_vtbl(struct pipe_screen
*screen
,
13 struct pipe_resource
*resource
,
14 struct winsys_handle
*handle
)
16 struct u_resource
*ur
= u_resource(resource
);
17 return ur
->vtbl
->resource_get_handle(screen
, resource
, handle
);
20 void u_resource_destroy_vtbl(struct pipe_screen
*screen
,
21 struct pipe_resource
*resource
)
23 struct u_resource
*ur
= u_resource(resource
);
24 ur
->vtbl
->resource_destroy(screen
, resource
);
27 unsigned u_is_resource_referenced_vtbl( struct pipe_context
*pipe
,
28 struct pipe_resource
*resource
,
29 unsigned face
, unsigned level
)
31 struct u_resource
*ur
= u_resource(resource
);
32 return ur
->vtbl
->is_resource_referenced(pipe
, resource
, face
, level
);
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
)
41 struct u_resource
*ur
= u_resource(resource
);
42 return ur
->vtbl
->get_transfer(context
, resource
, sr
, usage
, box
);
45 void u_transfer_destroy_vtbl(struct pipe_context
*pipe
,
46 struct pipe_transfer
*transfer
)
48 struct u_resource
*ur
= u_resource(transfer
->resource
);
49 ur
->vtbl
->transfer_destroy(pipe
, transfer
);
52 void *u_transfer_map_vtbl( struct pipe_context
*pipe
,
53 struct pipe_transfer
*transfer
)
55 struct u_resource
*ur
= u_resource(transfer
->resource
);
56 return ur
->vtbl
->transfer_map(pipe
, transfer
);
59 void u_transfer_flush_region_vtbl( struct pipe_context
*pipe
,
60 struct pipe_transfer
*transfer
,
61 const struct pipe_box
*box
)
63 struct u_resource
*ur
= u_resource(transfer
->resource
);
64 ur
->vtbl
->transfer_flush_region(pipe
, transfer
, box
);
67 void u_transfer_unmap_vtbl( struct pipe_context
*pipe
,
68 struct pipe_transfer
*transfer
)
70 struct u_resource
*ur
= u_resource(transfer
->resource
);
71 ur
->vtbl
->transfer_unmap(pipe
, transfer
);
74 void u_transfer_inline_write_vtbl( struct pipe_context
*pipe
,
75 struct pipe_resource
*resource
,
76 struct pipe_subresource sr
,
78 const struct pipe_box
*box
,
81 unsigned slice_stride
)
83 struct u_resource
*ur
= u_resource(resource
);
84 ur
->vtbl
->transfer_inline_write(pipe
,