1 /* 2 * Copyright (c) 2009-2024 Broadcom. All Rights Reserved. 3 * The term “Broadcom” refers to Broadcom Inc. 4 * and/or its subsidiaries. 5 * SPDX-License-Identifier: MIT 6 */ 7 8 9 #ifndef VMW_BUFFER_H_ 10 #define VMW_BUFFER_H_ 11 12 #include <assert.h> 13 #include "util/compiler.h" 14 #include "pipebuffer/pb_bufmgr.h" 15 #include "util/u_debug_flush.h" 16 17 18 /* These extra flags are used wherever the pb_usage_flags enum type is used */ 19 #define VMW_BUFFER_USAGE_SHARED (1 << 14) 20 #define VMW_BUFFER_USAGE_SYNC (1 << 15) 21 22 struct SVGAGuestPtr; 23 struct pb_buffer; 24 struct pb_manager; 25 struct svga_winsys_buffer; 26 struct svga_winsys_surface; 27 struct vmw_winsys_screen; 28 29 struct vmw_buffer_desc { 30 struct pb_desc pb_desc; 31 struct vmw_region *region; 32 }; 33 34 35 #if MESA_DEBUG 36 37 struct pb_buffer * 38 vmw_pb_buffer(struct svga_winsys_buffer *buffer); 39 struct svga_winsys_buffer * 40 vmw_svga_winsys_buffer_wrap(struct pb_buffer *buffer); 41 struct debug_flush_buf * 42 vmw_debug_flush_buf(struct svga_winsys_buffer *buffer); 43 44 #else 45 static inline struct pb_buffer * vmw_pb_buffer(struct svga_winsys_buffer * buffer)46vmw_pb_buffer(struct svga_winsys_buffer *buffer) 47 { 48 assert(buffer); 49 return (struct pb_buffer *)buffer; 50 } 51 52 53 static inline struct svga_winsys_buffer * vmw_svga_winsys_buffer_wrap(struct pb_buffer * buffer)54vmw_svga_winsys_buffer_wrap(struct pb_buffer *buffer) 55 { 56 return (struct svga_winsys_buffer *)buffer; 57 } 58 #endif 59 60 void 61 vmw_svga_winsys_buffer_destroy(struct svga_winsys_screen *sws, 62 struct svga_winsys_buffer *buf); 63 void * 64 vmw_svga_winsys_buffer_map(struct svga_winsys_screen *sws, 65 struct svga_winsys_buffer *buf, 66 enum pipe_map_flags flags); 67 68 void 69 vmw_svga_winsys_buffer_unmap(struct svga_winsys_screen *sws, 70 struct svga_winsys_buffer *buf); 71 72 struct pb_manager * 73 vmw_dma_bufmgr_create(struct vmw_winsys_screen *vws); 74 75 bool 76 vmw_dma_bufmgr_region_ptr(struct pb_buffer *buf, 77 struct SVGAGuestPtr *ptr); 78 79 80 #endif /* VMW_BUFFER_H_ */ 81