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